ISOWeekYearParser.js 861 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { startOfISOWeek } from "../../../startOfISOWeek.js";
  2. import { constructFrom } from "../../../constructFrom.js";
  3. import { Parser } from "../Parser.js";
  4. import { parseNDigitsSigned } from "../utils.js";
  5. // ISO week-numbering year
  6. export class ISOWeekYearParser extends Parser {
  7. priority = 130;
  8. parse(dateString, token) {
  9. if (token === "R") {
  10. return parseNDigitsSigned(4, dateString);
  11. }
  12. return parseNDigitsSigned(token.length, dateString);
  13. }
  14. set(date, _flags, value) {
  15. const firstWeekOfYear = constructFrom(date, 0);
  16. firstWeekOfYear.setFullYear(value, 0, 4);
  17. firstWeekOfYear.setHours(0, 0, 0, 0);
  18. return startOfISOWeek(firstWeekOfYear);
  19. }
  20. incompatibleTokens = [
  21. "G",
  22. "y",
  23. "Y",
  24. "u",
  25. "Q",
  26. "q",
  27. "M",
  28. "L",
  29. "w",
  30. "d",
  31. "D",
  32. "e",
  33. "c",
  34. "t",
  35. "T",
  36. ];
  37. }