Now.plainDateTime.js 1.5 KB

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