Add toRfc3339WithNanoseconds
This commit is contained in:
parent
539b3292c9
commit
4223b5242d
@ -1,6 +1,6 @@
|
||||
import { ReadonlyDate } from "readonly-date";
|
||||
|
||||
import { DateTime, fromRfc3339WithNanoseconds } from "./dates";
|
||||
import { DateTime, DateWithNanoseconds, fromRfc3339WithNanoseconds, toRfc3339WithNanoseconds } from "./dates";
|
||||
|
||||
describe("dates", () => {
|
||||
it("fromRfc3339WithNanoseconds", () => {
|
||||
@ -13,6 +13,43 @@ describe("dates", () => {
|
||||
expect(fromRfc3339WithNanoseconds("2020-12-15T10:57:26.778000009Z").nanoseconds).toEqual(9);
|
||||
});
|
||||
|
||||
describe("toRfc3339WithNanoseconds", () => {
|
||||
it("works", () => {
|
||||
const date1 = new ReadonlyDate("2020-12-15T10:57:26.778Z");
|
||||
(date1 as any).nanoseconds = 0;
|
||||
expect(toRfc3339WithNanoseconds(date1)).toEqual("2020-12-15T10:57:26.778000000Z");
|
||||
const date2 = new ReadonlyDate("2020-12-15T10:57:26.778Z");
|
||||
(date2 as any).nanoseconds = 900000;
|
||||
expect(toRfc3339WithNanoseconds(date2)).toEqual("2020-12-15T10:57:26.778900000Z");
|
||||
const date3 = new ReadonlyDate("2020-12-15T10:57:26.778Z");
|
||||
(date3 as any).nanoseconds = 90000;
|
||||
expect(toRfc3339WithNanoseconds(date3)).toEqual("2020-12-15T10:57:26.778090000Z");
|
||||
const date4 = new ReadonlyDate("2020-12-15T10:57:26.778Z");
|
||||
(date4 as any).nanoseconds = 9000;
|
||||
expect(toRfc3339WithNanoseconds(date4)).toEqual("2020-12-15T10:57:26.778009000Z");
|
||||
const date5 = new ReadonlyDate("2020-12-15T10:57:26.778Z");
|
||||
(date5 as any).nanoseconds = 900;
|
||||
expect(toRfc3339WithNanoseconds(date5)).toEqual("2020-12-15T10:57:26.778000900Z");
|
||||
const date6 = new ReadonlyDate("2020-12-15T10:57:26.778Z");
|
||||
(date6 as any).nanoseconds = 90;
|
||||
expect(toRfc3339WithNanoseconds(date6)).toEqual("2020-12-15T10:57:26.778000090Z");
|
||||
const date7 = new ReadonlyDate("2020-12-15T10:57:26.778Z");
|
||||
(date7 as any).nanoseconds = 9;
|
||||
expect(toRfc3339WithNanoseconds(date7)).toEqual("2020-12-15T10:57:26.778000009Z");
|
||||
});
|
||||
|
||||
it("works for DateWithNanoseconds", () => {
|
||||
const date1: DateWithNanoseconds = new Date("2020-12-15T10:57:26.778Z");
|
||||
date1.nanoseconds = 1;
|
||||
expect(toRfc3339WithNanoseconds(date1)).toEqual("2020-12-15T10:57:26.778000001Z");
|
||||
});
|
||||
|
||||
it("works for Date", () => {
|
||||
const date1 = new Date("2020-12-15T10:57:26.778Z");
|
||||
expect(toRfc3339WithNanoseconds(date1)).toEqual("2020-12-15T10:57:26.778000000Z");
|
||||
});
|
||||
});
|
||||
|
||||
describe("DateTime", () => {
|
||||
it("decodes a string", () => {
|
||||
expect(DateTime.decode("2020-12-15T10:57:26.778Z").nanoseconds).toEqual(0);
|
||||
|
||||
@ -20,15 +20,20 @@ export function fromRfc3339WithNanoseconds(dateTimeString: string): DateWithNano
|
||||
return out;
|
||||
}
|
||||
|
||||
export function toRfc3339WithNanoseconds(dateTime: ReadonlyDateWithNanoseconds): string {
|
||||
const millisecondIso = dateTime.toISOString();
|
||||
const nanoseconds = dateTime.nanoseconds?.toString() ?? "";
|
||||
return `${millisecondIso.slice(0, -1)}${nanoseconds.padStart(6, "0")}Z`;
|
||||
}
|
||||
|
||||
export class DateTime {
|
||||
/** @deprecated Use fromRfc3339WithNanoseconds instead */
|
||||
public static decode(dateTimeString: string): ReadonlyDateWithNanoseconds {
|
||||
return fromRfc3339WithNanoseconds(dateTimeString);
|
||||
}
|
||||
|
||||
/** @deprecated Use toRfc3339WithNanoseconds instead */
|
||||
public static encode(dateTime: ReadonlyDateWithNanoseconds): string {
|
||||
const millisecondIso = dateTime.toISOString();
|
||||
const nanoseconds = dateTime.nanoseconds?.toString() ?? "";
|
||||
return `${millisecondIso.slice(0, -1)}${nanoseconds.padStart(6, "0")}Z`;
|
||||
return toRfc3339WithNanoseconds(dateTime);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,12 @@
|
||||
export { Adaptor } from "./adaptor";
|
||||
export { adaptor33, adaptor34 } from "./adaptors";
|
||||
export { Client } from "./client";
|
||||
export { DateTime, ReadonlyDateWithNanoseconds, fromRfc3339WithNanoseconds } from "./dates";
|
||||
export {
|
||||
DateTime,
|
||||
ReadonlyDateWithNanoseconds,
|
||||
fromRfc3339WithNanoseconds,
|
||||
toRfc3339WithNanoseconds,
|
||||
} from "./dates";
|
||||
export {
|
||||
AbciInfoRequest,
|
||||
AbciQueryParams,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user