Describes decimal.
Describes decimal (nothrow version).
import mir.timestamp; // null.timestamp assert(IonValue([0x6F]).describe.get!IonNull == IonNull(IonTypeCode.timestamp)); ubyte[][] set = [ [0x68, 0x80, 0x0F, 0xD0, 0x87, 0x88, 0x82, 0x83, 0x84, ], // 2000-07-08T02:03:04Z with no fractional seconds [0x69, 0x80, 0x0F, 0xD0, 0x87, 0x88, 0x82, 0x83, 0x84, 0x80, ], // The same instant with 0d0 fractional seconds and implicit zero coefficient [0x6A, 0x80, 0x0F, 0xD0, 0x87, 0x88, 0x82, 0x83, 0x84, 0x80, 00], // The same instant with 0d0 fractional seconds and explicit zero coefficient [0x69, 0x80, 0x0F, 0xD0, 0x87, 0x88, 0x82, 0x83, 0x84, 0xC0, ], // The same instant with 0d-0 fractional seconds [0x69, 0x80, 0x0F, 0xD0, 0x87, 0x88, 0x82, 0x83, 0x84, 0x81, ], // The same instant with 0d1 fractional seconds ]; auto r = Timestamp(2000, 7, 8, 2, 3, 4).withOffset(0); foreach(data; set) { assert(IonValue(data).describe.get!IonTimestamp.get == r); } assert(IonValue([0x69, 0x80, 0x0F, 0xD0, 0x87, 0x88, 0x82, 0x83, 0x84, 0xC2]) .describe .get!IonTimestamp .get == Timestamp(2000, 7, 8, 2, 3, 4, -2, 0).withOffset(0)); assert(IonValue([0x6A, 0x80, 0x0F, 0xD0, 0x87, 0x88, 0x82, 0x83, 0x84, 0xC3, 0x10]) .describe .get!IonTimestamp .get == Timestamp(2000, 7, 8, 2, 3, 4, -3, 16).withOffset(0));
Ion Timestamp
Timestamp representations have 7 components, where 5 of these components are optional depending on the precision of the timestamp. The 2 non-optional components are offset and year. The 5 optional components are (from least precise to most precise): month, day, hour and minute, second, fraction_exponent and fraction_coefficient. All of these 7 components are in Universal Coordinated Time (UTC).