---
product: Chilkat
product_version: 11.7.0
language: csharp
language_label: C#
class: CkDateTime
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/csCkDateTimeRef.html
---
# Chilkat CkDateTime — C# — v11.7.0

> Chilkat 11.7.0 · language=csharp · class=CkDateTime
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/CkDateTime.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/guide.md`.

## Purpose

`CkDateTime` represents a date/time value and provides conversion methods for common date/time formats, including .NET DateTime, DateTime ticks, RFC 822, RFC 3339 / ISO 8601-style timestamps, Unix time, DOS date/time, OLE DATE, NTP time, ULID timestamps, and Chilkat DtObj. It also supports date arithmetic, age/expiration checks, serialization, and local/UTC conversion.

For an extended overview, see [CkDateTime Class Overview](https://www.chilkatsoft.com/ckdatetime_class_overview.asp)

## Object creation, unlocking and error handling

**Object Creation**

```csharp
Chilkat.CkDateTime obj = new Chilkat.CkDateTime();
```

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in C#.

Minimal complete program:

```csharp
// Required once per process. Any string unlocks a 30-day trial; use your purchased code in production.
Chilkat.Global glob = new Chilkat.Global();
if (!glob.UnlockBundle("Anything for 30-day trial"))
{
    Console.WriteLine(glob.LastErrorText);
    return;
}

Chilkat.CkDateTime ckDateTime = new Chilkat.CkDateTime();

bool success = ckDateTime.SetFromNtpServer("<jsonStr>");
if (!success)
{
    Console.WriteLine(ckDateTime.LastErrorText);   // full diagnostic of what went wrong
    return;
}
```

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `public string DebugLogFilePath {get; set; }` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `public string LastErrorHtml {get; }` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `public string LastErrorText {get; }` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `public string LastErrorXml {get; }` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `public bool LastMethodSuccess {get; set; }` | read/write | Indicates the success or failure of the most recent method call: `true` means success, `false` means failure. |
| `VerboseLogging` | `public bool VerboseLogging {get; set; }` | read/write | If set to `true`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `public string Version {get; }` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `IsDst` | property, read-only | `public int IsDst {get; }` |
| `UtcOffset` | property, read-only | `public int UtcOffset {get; }` |
| `AddDays` | method | `public bool AddDays(int numDays);` |
| `AddSeconds` | method | `public bool AddSeconds(int numSeconds);` |
| `DeSerialize` | method | `public void DeSerialize(string serializedDateTime);` |
| `DiffSeconds` | method | `public int DiffSeconds(CkDateTime dateTimeArg);` |
| `ExpiresWithin` | method | `public bool ExpiresWithin(int n, string units);` |
| `GetAsDateTime` | method | `public DateTime GetAsDateTime(bool bLocal);` |
| `GetAsDateTimeTicks` | method | `public long GetAsDateTimeTicks(bool bLocal);` |
| `GetAsDosDate` | method | `public uint GetAsDosDate(bool bLocal);` |
| `GetAsIso8601` | method | `public string GetAsIso8601(string formatStr, bool bLocal);` |
| `GetAsOleDate` | method | `public double GetAsOleDate(bool bLocal);` |
| `GetAsRfc822` | method | `public string GetAsRfc822(bool bLocal);` |
| `GetAsTimestamp` | method | `public string GetAsTimestamp(bool bLocal);` |
| `GetAsUnixTime` | method | `public uint GetAsUnixTime(bool bLocal);` |
| `GetAsUnixTime64` | method | `public long GetAsUnixTime64(bool bLocal);` |
| `GetAsUnixTimeStr` | method | `public string GetAsUnixTimeStr(bool bLocal);` |
| `LoadTaskResult` | method | `public bool LoadTaskResult(Task task);` |
| `OlderThan` | method | `public bool OlderThan(int n, string units);` |
| `Serialize` | method | `public string Serialize();` |
| `SetFromCurrentSystemTime` | method | `public bool SetFromCurrentSystemTime();` |
| `SetFromDateTime` | method | `public bool SetFromDateTime(bool bLocal, DateTime dt);` |
| `SetFromDateTimeTicks` | method | `public bool SetFromDateTimeTicks(bool bLocal, long ticks);` |
| `SetFromDosDate` | method | `public bool SetFromDosDate(bool bLocal, uint t);` |
| `SetFromDtObj` | method | `public bool SetFromDtObj(DtObj dt);` |
| `SetFromNtpServer` | method | `public bool SetFromNtpServer(string jsonStr);` |
| `SetFromNtpTime` | method | `public bool SetFromNtpTime(int ntpSeconds);` |
| `SetFromOleDate` | method | `public bool SetFromOleDate(bool bLocal, double dt);` |
| `SetFromRfc822` | method | `public bool SetFromRfc822(string rfc822Str);` |
| `SetFromTimestamp` | method | `public bool SetFromTimestamp(string timestamp);` |
| `SetFromUlid` | method | `public bool SetFromUlid(bool bLocal, string ulid);` |
| `SetFromUnixTime` | method | `public bool SetFromUnixTime(bool bLocal, uint t);` |
| `SetFromUnixTime64` | method | `public bool SetFromUnixTime64(bool bLocal, long t);` |
| `ToDtObj` | method | `public void ToDtObj(bool bLocal, DtObj dtObj);` |
| `UlidGenerate` | method | `public string UlidGenerate(bool bLocal);` |
| `UlidIncrement` | method | `public bool UlidIncrement(StringBuilder ulid);` |
| `UlidValidate` | method | `public bool UlidValidate(string ulid);` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### CkDateTime.IsDst

`Chilkat 11.7.0 · csharp · CkDateTime · IsDst · property · read-only`

```csharp
public int IsDst {get; }
```

This is the Daylight Saving Time flag. It can have one of three possible values: 1, 0, or -1. It has the value 1 if Daylight Saving Time is in effect, 0 if Daylight Saving Time is not in effect, and -1 if the information is not available.

Note: This is NOT the DST for the current system time. It is the DST that was in effect at the date value contained in this object.

### CkDateTime.UtcOffset

`Chilkat 11.7.0 · csharp · CkDateTime · UtcOffset · property · read-only`

```csharp
public int UtcOffset {get; }
```

For the current system's timezone, returns the number of seconds offset from UTC for this date/time. The offset includes daylight savings adjustment. Local timezones west of UTC return a negative offset.

## Methods

### CkDateTime.AddDays

`Chilkat 11.7.0 · csharp · CkDateTime · AddDays · method`

```csharp
public bool AddDays(int numDays);
```

Adds an integer number of days to the date/time. To subtract days, pass a negative integer.

Returns true for success, false for failure.

### CkDateTime.AddSeconds

`Chilkat 11.7.0 · csharp · CkDateTime · AddSeconds · method · since 9.5.0.65`

```csharp
public bool AddSeconds(int numSeconds);
```

Adds an integer number of seconds to the date/time. To subtract seconds, pass a negative integer.

Returns true for success, false for failure.

### CkDateTime.DeSerialize

`Chilkat 11.7.0 · csharp · CkDateTime · DeSerialize · method`

```csharp
public void DeSerialize(string serializedDateTime);
```

Loads the date/time with a string having the format as produced by the Serialize method, which is a string of SPACE separated integers containing (in this order) year, month, day, hour, minutes, seconds, and a UTC flag having the value of 1/0.

### CkDateTime.DiffSeconds

`Chilkat 11.7.0 · csharp · CkDateTime · DiffSeconds · method · since 9.5.0.65`

```csharp
public int DiffSeconds(CkDateTime dateTimeArg);
```

Returns the difference in seconds between the `dateTimeArg` and this date/time. The value returned is this object's date/time - `dateTimeArg`'s date/time. For example, if the returned value is positive, then this object's date/time is more recent than `dateTimeArg`'s date/time. If the return value is negative, then this object's date/time is older than `dateTimeArg`'s date/time.

### CkDateTime.ExpiresWithin

`Chilkat 11.7.0 · csharp · CkDateTime · ExpiresWithin · method · since 9.5.0.67`

```csharp
public bool ExpiresWithin(int n, string units);
```

Returns `true` if the date/time is within `n` seconds/minutes/hours/days of the current system date/time. Otherwise returns `false`. The `units` can be `seconds`, `minutes`, `hours`, or `days` (plural or singular).

### CkDateTime.GetAsDateTime

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsDateTime · method`

```csharp
public DateTime GetAsDateTime(bool bLocal);
```

Returns the date/time in a native format. The .NET implementation returns a .NET System.DateTime structure. The ActiveX implementation returns a Date object.

`bLocal` indicates whether a local or UTC time is returned.

### CkDateTime.GetAsDateTimeTicks

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsDateTimeTicks · method`

```csharp
public long GetAsDateTimeTicks(bool bLocal);
```

Returns the date/time as a 64-bit integer .NET DateTime value.

`bLocal` indicates whether a local or UTC time is returned.

This is a date and time expressed in the number of 100-nanosecond intervals that have elapsed since January 1, 0001 at 00:00:00.000 in the Gregorian calendar.

The DateTime value type represents dates and times with values ranging from 12:00:00 midnight, January 1, 0001 Anno Domini (Common Era) through 11:59:59 P.M., December 31, 9999 A.D. (C.E.).

Time values are measured in 100-nanosecond units called ticks, and a particular date is the number of ticks since 12:00 midnight, January 1, 0001 A.D. (C.E.) in the GregorianCalendar calendar (excluding ticks that would be added by leap seconds). For example, a ticks value of 31241376000000000L represents the date, Friday, January 01, 0100 12:00:00 midnight. A DateTime value is always expressed in the context of an explicit or default calendar.

### CkDateTime.GetAsDosDate

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsDosDate · method`

```csharp
public uint GetAsDosDate(bool bLocal);
```

Returns the date/time as a 32-bit DOS date/time bitmask.

`bLocal` indicates whether a local or UTC time is returned.

The DOS date/time format is a bitmask:

```

			   24                16                 8                 0
	    +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
	    |Y|Y|Y|Y|Y|Y|Y|M| |M|M|M|D|D|D|D|D| |h|h|h|h|h|m|m|m| |m|m|m|s|s|s|s|s|
	    +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
	     \___________/\________/\_________/ \________/\____________/\_________/
		 year        month       day      hour       minute        second
```

The year is stored as an offset from 1980. Seconds are stored in two-second increments. (So if the `second` value is 15, it actually represents 30 seconds.)

### CkDateTime.GetAsIso8601

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsIso8601 · method · since 9.5.0.65`

```csharp
public string GetAsIso8601(string formatStr, bool bLocal);
```

Returns the date/time in a compatible ISO 8601 format according to the format specified in `formatStr`.. Examples of ISO 8601 formats include the following:

```
    YYYY-MM-DD

    YYYY-MM-DDThh:mmTZD

    YYYY-MM-DDThh:mm:ssTZD

    YYYY-MM-DDThh:mm:ss:sssTZD
```

For the date portion of these formats, `YYYY` is a four-digit year representation, `MM` is a two-digit month, and `DD` is a two-digit day. For the time portion, `hh` is the hour in 24-hour notation, `mm` is the two-digit minutes, `ss` is the two-digit seconds, and `sss` is the 3-digit milliseconds. A time designator `T` separates the date and time portions of the string, while a time zone designator `TZD` specifies a time zone (UTC).

`bLocal` indicates whether a local or UTC time is returned.

Returns `null` on failure

### CkDateTime.GetAsOleDate

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsOleDate · method`

```csharp
public double GetAsOleDate(bool bLocal);
```

Returns the date/time in a Windows OLE `DATE` format.

`bLocal` indicates whether a local or UTC time is returned.

The OLE automation date format is a floating point value, counting days since midnight 30 December 1899. Hours and minutes are represented as fractional days.

### CkDateTime.GetAsRfc822

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsRfc822 · method`

```csharp
public string GetAsRfc822(bool bLocal);
```

Returns the date/time as an RFC822 formatted string. (An RFC822 format string is what is found in the `Date` header field of an email, such as `Wed, 18 Oct 2017 09:08:21 GMT`.)

`bLocal` indicates whether a local or UTC time is returned.

Returns `null` on failure

### CkDateTime.GetAsTimestamp

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsTimestamp · method · since 9.5.0.58`

```csharp
public string GetAsTimestamp(bool bLocal);
```

Returns the date/time as an RFC 3339 formatted string, such as `1990-12-31T23:59:60Z`. (This is an ISO 8061 format like the following: YYYY-MM-DDThh:mm:ssTZD)

`bLocal` indicates whether a local or UTC time is returned.

Returns `null` on failure

### CkDateTime.GetAsUnixTime

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsUnixTime · method`

```csharp
public uint GetAsUnixTime(bool bLocal);
```

Returns the date/time as a Unix time value, which is the number of seconds elapsed since 00:00:00 UTC on January 1, 1970.

`bLocal` indicates whether the date/time returned is local or UTC.

### CkDateTime.GetAsUnixTime64

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsUnixTime64 · method`

```csharp
public long GetAsUnixTime64(bool bLocal);
```

The same as GetUnixTime, except returns the date/time as a 64-bit integer.

`bLocal` indicates whether a local or UTC time is returned.

Note: 64-bit integers are needed after Jan 19, 2038. The Y2038 problem happens because some systems store Unix time as a signed 32-bit number of seconds since Jan 1, 1970. This number runs out on Jan 19, 2038, causing the time to wrap around to a date in 1901.

### CkDateTime.GetAsUnixTimeStr

`Chilkat 11.7.0 · csharp · CkDateTime · GetAsUnixTimeStr · method · since 9.5.0.65`

```csharp
public string GetAsUnixTimeStr(bool bLocal);
```

Returns the time in Unix format (in seconds since the epoch: 00:00:00 UTC on 1 January 1970).

`bLocal` indicates whether the date/time returned is local or UTC.

Returns `null` on failure

### CkDateTime.LoadTaskResult

`Chilkat 11.7.0 · csharp · CkDateTime · LoadTaskResult · method · since 9.5.0.52`

```csharp
public bool LoadTaskResult(Task task);
```

Loads the date/time from a completed asynchronous task.

Returns true for success, false for failure.

### CkDateTime.OlderThan

`Chilkat 11.7.0 · csharp · CkDateTime · OlderThan · method · since 9.5.0.67`

```csharp
public bool OlderThan(int n, string units);
```

Returns `true` if the date/time is older than the current system date/time by `n` seconds/minutes/hours/days. Otherwise returns `false`. The `units` can be `seconds`, `minutes`, `hours`, or `days` (plural or singular).

### CkDateTime.Serialize

`Chilkat 11.7.0 · csharp · CkDateTime · Serialize · method`

```csharp
public string Serialize();
```

Serializes the date/time to a us-ascii string that can be imported at a later time via the DeSerialize method. The format of the string returned by this method is not intended to match any published standard. It is formatted to a string with SPACE separated integers containing (in this order) year, month, day, hour, minutes, seconds, and a UTC flag having the value of 1 or 0.

Returns `null` on failure

### CkDateTime.SetFromCurrentSystemTime

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromCurrentSystemTime · method`

```csharp
public bool SetFromCurrentSystemTime();
```

Sets the date/time from the current system time.

Returns true for success, false for failure.

### CkDateTime.SetFromDateTime

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromDateTime · method`

```csharp
public bool SetFromDateTime(bool bLocal, DateTime dt);
```

Sets the date/time from a .NET System.DateTime structure.

`bLocal` indicates whether the passed in date/time is local or UTC.

### CkDateTime.SetFromDateTimeTicks

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromDateTimeTicks · method`

```csharp
public bool SetFromDateTimeTicks(bool bLocal, long ticks);
```

Sets the date/time from a .NET DateTime value represented in ticks. See GetAsDateTimeTicks for more information.

`bLocal` indicates whether the passed in date/time is local or UTC.

Returns true for success, false for failure.

### CkDateTime.SetFromDosDate

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromDosDate · method`

```csharp
public bool SetFromDosDate(bool bLocal, uint t);
```

Sets the date/time from a 32-bit DOS date/time bitmask. See GetAsDosDate for more information.

Returns true for success, false for failure.

### CkDateTime.SetFromDtObj

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromDtObj · method · since 9.5.0.47`

```csharp
public bool SetFromDtObj(DtObj dt);
```

Sets the date/time from a Chilkat `Dt` object.

Returns true for success, false for failure.

### CkDateTime.SetFromNtpServer

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromNtpServer · method · since 9.5.0.96`

```csharp
public bool SetFromNtpServer(string jsonStr);
```

Sets the date/time by sending a query to an NTP server.

Returns true for success, false for failure.

### CkDateTime.SetFromNtpTime

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromNtpTime · method · since 9.5.0.50`

```csharp
public bool SetFromNtpTime(int ntpSeconds);
```

Sets the date/time from a 32-bit NTP time value. `ntpSeconds` is the number of seconds since 00:00 (midnight) 1 January 1900 GMT.

Returns true for success, false for failure.

### CkDateTime.SetFromOleDate

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromOleDate · method`

```csharp
public bool SetFromOleDate(bool bLocal, double dt);
```

Sets the date/time from a Windows OLE `DATE` value.

`bLocal` indicates whether the passed in date/time is local or UTC.

**Note:** This method was not working correctly. The problem was discovered just after releasing v9.5.0.65. It will be fixed in the next version update.

Returns true for success, false for failure.

### CkDateTime.SetFromRfc822

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromRfc822 · method`

```csharp
public bool SetFromRfc822(string rfc822Str);
```

Sets the date/time from an RFC822 date/time formatted string. Here are some examples of RFC822 formatted date/times:

```
Tue, 15 Nov 2022 22:00:58 +0000
Tue, 15 Nov 2022 20:21:50 +0100
Tue, 01 Nov 2022 18:09:41 -0600
```

Returns true for success, false for failure.

### CkDateTime.SetFromTimestamp

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromTimestamp · method · since 9.5.0.58`

```csharp
public bool SetFromTimestamp(string timestamp);
```

Sets the date/time from an RFC 3339 timestamp format. (such as `1990-12-31T23:59:60Z:`)

(This is an ISO 8061 format like the following: YYYY-MM-DDThh:mm:ssTZD)

**Note:** Starting in v9.5.0.77, strings formatted as `YYMMDDhhmmssZ`, such as `181221132225Z`, can also be passed to this method.

Returns true for success, false for failure.

### CkDateTime.SetFromUlid

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromUlid · method · since 9.5.0.94`

```csharp
public bool SetFromUlid(bool bLocal, string ulid);
```

Sets this object's date/time using the timestamp embedded in the `ulid`. If the `ulid` was not a valid ULID, returns `false` and the date/time is not set. `bLocal` indicates whether the `ulid` uses a local time or UTC time.

Returns true for success, false for failure.

### CkDateTime.SetFromUnixTime

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromUnixTime · method`

```csharp
public bool SetFromUnixTime(bool bLocal, uint t);
```

Sets the date/time from a UNIX time value.

`bLocal` indicates whether the passed in date/time is local or UTC.

Returns true for success, false for failure.

### CkDateTime.SetFromUnixTime64

`Chilkat 11.7.0 · csharp · CkDateTime · SetFromUnixTime64 · method`

```csharp
public bool SetFromUnixTime64(bool bLocal, long t);
```

The same as SetFromUnixTime, except that it uses a 64-bit integer to solve the Y2038 problem.

`bLocal` indicates whether the passed in date/time is local or UTC.

Note: 64-bit integers are needed after Jan 19, 2038. The Y2038 problem happens because some systems store Unix time as a signed 32-bit number of seconds since Jan 1, 1970. This number runs out on Jan 19, 2038, causing the time to wrap around to a date in 1901.

Returns true for success, false for failure.

### CkDateTime.ToDtObj

`Chilkat 11.7.0 · csharp · CkDateTime · ToDtObj · method · since 11.0.0`

```csharp
public void ToDtObj(bool bLocal, DtObj dtObj);
```

Copies the date/time to the `dtObj`. Gets the date/time in the local time if `bLocal` is `true`, or GMT if `bLocal` is `false`.

### CkDateTime.UlidGenerate

`Chilkat 11.7.0 · csharp · CkDateTime · UlidGenerate · method · since 9.5.0.94`

```csharp
public string UlidGenerate(bool bLocal);
```

Generates and returns a new ULID using this object's date/time value. `bLocal` indicates whether to use local time or UTC time.

Returns `null` on failure

### CkDateTime.UlidIncrement

`Chilkat 11.7.0 · csharp · CkDateTime · UlidIncrement · method · since 9.5.0.94`

```csharp
public bool UlidIncrement(StringBuilder ulid);
```

Increments the ULID that is passed in `ulid`.

Returns true for success, false for failure.

### CkDateTime.UlidValidate

`Chilkat 11.7.0 · csharp · CkDateTime · UlidValidate · method · since 9.5.0.94`

```csharp
public bool UlidValidate(string ulid);
```

Validates the `ulid`. Returns `true` if the `ulid` is valid, otherwise returns `false`.

Returns true for success, false for failure.

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `GetDtObj` | method | before 11.6.1 | — |

## Related classes

[`DtObj`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/DtObj.md), [`StringBuilder`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/StringBuilder.md), [`Task`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/Task.md)

