Now.plainDateTimeISO.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. describe("correct behavior", () => {
  2. test("length is 0", () => {
  3. expect(Temporal.Now.plainDateTimeISO).toHaveLength(0);
  4. });
  5. test("basic functionality", () => {
  6. const plainDateTime = Temporal.Now.plainDateTimeISO();
  7. expect(plainDateTime).toBeInstanceOf(Temporal.PlainDateTime);
  8. expect(plainDateTime.calendar.id).toBe("iso8601");
  9. });
  10. test("custom time zone", () => {
  11. const timeZone = {
  12. getOffsetNanosecondsFor() {
  13. return 86400000000000;
  14. },
  15. };
  16. const plainDateTimeToEpochSeconds = plainDateTime =>
  17. (plainDateTime.year - 1970) * 31_556_952 +
  18. plainDateTime.month * 2_630_000 +
  19. plainDateTime.day * 86_400 +
  20. plainDateTime.hour * 3_600 +
  21. plainDateTime.minute * 60 +
  22. plainDateTime.second +
  23. plainDateTime.millisecond / 1_000 +
  24. plainDateTime.microsecond / 1_000_000 +
  25. plainDateTime.nanosecond / 1_000_000_000;
  26. const plainDateTime = Temporal.Now.plainDateTimeISO();
  27. const plainDateTimeWithOffset = Temporal.Now.plainDateTimeISO(timeZone);
  28. // Let's hope the duration between the above two lines is less than a second :^)
  29. const differenceSeconds =
  30. plainDateTimeToEpochSeconds(plainDateTimeWithOffset) -
  31. plainDateTimeToEpochSeconds(plainDateTime);
  32. expect(Math.floor(differenceSeconds)).toBe(86400);
  33. });
  34. });