Now.plainDateTimeISO.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  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.dayOfYear * 86_400 +
  19. plainDateTime.hour * 3_600 +
  20. plainDateTime.minute * 60 +
  21. plainDateTime.second +
  22. plainDateTime.millisecond / 1_000 +
  23. plainDateTime.microsecond / 1_000_000 +
  24. plainDateTime.nanosecond / 1_000_000_000;
  25. const plainDateTime = Temporal.Now.plainDateTimeISO();
  26. const plainDateTimeWithOffset = Temporal.Now.plainDateTimeISO(timeZone);
  27. // Let's hope the duration between the above two lines is less than a second :^)
  28. const differenceSeconds =
  29. plainDateTimeToEpochSeconds(plainDateTimeWithOffset) -
  30. plainDateTimeToEpochSeconds(plainDateTime);
  31. expect(Math.floor(differenceSeconds)).toBe(86400);
  32. });
  33. });