chronal 0.0.23 → 0.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"is-tomorrow.d.ts","sourceRoot":"","sources":["../../src/lib/is-tomorrow.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CA2C/E"}
1
+ {"version":3,"file":"is-tomorrow.d.ts","sourceRoot":"","sources":["../../src/lib/is-tomorrow.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAyC/E"}
@@ -29,13 +29,12 @@ export function isTomorrow(date, options = {}) {
29
29
  }
30
30
  // Timezone-aware comparison
31
31
  const formatter = getDTF("en-US", timezone);
32
- const nowParts = formatter.formatToParts(now);
33
32
  const getPartValue = (parts, type) => parts.find((p) => p.type === type)?.value || "0";
34
- const nowYear = parseInt(getPartValue(nowParts, "year"), 10);
35
- const nowMonth = parseInt(getPartValue(nowParts, "month"), 10);
36
- const nowDay = parseInt(getPartValue(nowParts, "day"), 10);
37
- // Calculate tomorrow in the target timezone
38
- const tomorrowDate = new Date(Date.UTC(nowYear, nowMonth - 1, nowDay + 1));
33
+ // +24h from now always lands in tomorrow for any fixed-offset timezone.
34
+ // Date.UTC(localYear, localMonth-1, localDay+1) was wrong: it creates UTC
35
+ // midnight from local date parts, which represents the previous evening in
36
+ // timezones behind UTC (e.g. UTC-3 São Paulo).
37
+ const tomorrowDate = new Date(now.getTime() + 24 * 60 * 60 * 1000);
39
38
  const tomorrowParts = formatter.formatToParts(tomorrowDate);
40
39
  const tomorrowYear = getPartValue(tomorrowParts, "year");
41
40
  const tomorrowMonth = getPartValue(tomorrowParts, "month");
@@ -1 +1 @@
1
- {"version":3,"file":"is-yesterday.d.ts","sourceRoot":"","sources":["../../src/lib/is-yesterday.ts"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CA2CjF"}
1
+ {"version":3,"file":"is-yesterday.d.ts","sourceRoot":"","sources":["../../src/lib/is-yesterday.ts"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAyCjF"}
@@ -29,13 +29,12 @@ export function isYesterday(date, options = {}) {
29
29
  }
30
30
  // Timezone-aware comparison
31
31
  const formatter = getDTF("en-US", timezone);
32
- const nowParts = formatter.formatToParts(now);
33
32
  const getPartValue = (parts, type) => parts.find((p) => p.type === type)?.value || "0";
34
- const nowYear = parseInt(getPartValue(nowParts, "year"), 10);
35
- const nowMonth = parseInt(getPartValue(nowParts, "month"), 10);
36
- const nowDay = parseInt(getPartValue(nowParts, "day"), 10);
37
- // Calculate yesterday in the target timezone
38
- const yesterdayDate = new Date(Date.UTC(nowYear, nowMonth - 1, nowDay - 1));
33
+ // -24h from now always lands in yesterday for any fixed-offset timezone.
34
+ // Date.UTC(localYear, localMonth-1, localDay-1) was wrong: it creates UTC
35
+ // midnight from local date parts, which represents the previous evening in
36
+ // timezones behind UTC (e.g. UTC-3 São Paulo).
37
+ const yesterdayDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);
39
38
  const yesterdayParts = formatter.formatToParts(yesterdayDate);
40
39
  const yesterdayYear = getPartValue(yesterdayParts, "year");
41
40
  const yesterdayMonth = getPartValue(yesterdayParts, "month");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chronal",
3
- "version": "0.0.23",
3
+ "version": "0.0.24",
4
4
  "description": "A tiny and fast date utility library for modern JavaScript runtimes.",
5
5
  "keywords": [
6
6
  "date",
@@ -1 +1 @@
1
- {"version":3,"file":"is-tomorrow.d.ts","sourceRoot":"","sources":["../../src/lib/is-tomorrow.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CA2C/E"}
1
+ {"version":3,"file":"is-tomorrow.d.ts","sourceRoot":"","sources":["../../src/lib/is-tomorrow.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAyC/E"}
@@ -32,13 +32,12 @@ function isTomorrow(date, options = {}) {
32
32
  }
33
33
  // Timezone-aware comparison
34
34
  const formatter = (0, dtf_js_1.getDTF)("en-US", timezone);
35
- const nowParts = formatter.formatToParts(now);
36
35
  const getPartValue = (parts, type) => parts.find((p) => p.type === type)?.value || "0";
37
- const nowYear = parseInt(getPartValue(nowParts, "year"), 10);
38
- const nowMonth = parseInt(getPartValue(nowParts, "month"), 10);
39
- const nowDay = parseInt(getPartValue(nowParts, "day"), 10);
40
- // Calculate tomorrow in the target timezone
41
- const tomorrowDate = new Date(Date.UTC(nowYear, nowMonth - 1, nowDay + 1));
36
+ // +24h from now always lands in tomorrow for any fixed-offset timezone.
37
+ // Date.UTC(localYear, localMonth-1, localDay+1) was wrong: it creates UTC
38
+ // midnight from local date parts, which represents the previous evening in
39
+ // timezones behind UTC (e.g. UTC-3 São Paulo).
40
+ const tomorrowDate = new Date(now.getTime() + 24 * 60 * 60 * 1000);
42
41
  const tomorrowParts = formatter.formatToParts(tomorrowDate);
43
42
  const tomorrowYear = getPartValue(tomorrowParts, "year");
44
43
  const tomorrowMonth = getPartValue(tomorrowParts, "month");
@@ -1 +1 @@
1
- {"version":3,"file":"is-yesterday.d.ts","sourceRoot":"","sources":["../../src/lib/is-yesterday.ts"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CA2CjF"}
1
+ {"version":3,"file":"is-yesterday.d.ts","sourceRoot":"","sources":["../../src/lib/is-yesterday.ts"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAyCjF"}
@@ -32,13 +32,12 @@ function isYesterday(date, options = {}) {
32
32
  }
33
33
  // Timezone-aware comparison
34
34
  const formatter = (0, dtf_js_1.getDTF)("en-US", timezone);
35
- const nowParts = formatter.formatToParts(now);
36
35
  const getPartValue = (parts, type) => parts.find((p) => p.type === type)?.value || "0";
37
- const nowYear = parseInt(getPartValue(nowParts, "year"), 10);
38
- const nowMonth = parseInt(getPartValue(nowParts, "month"), 10);
39
- const nowDay = parseInt(getPartValue(nowParts, "day"), 10);
40
- // Calculate yesterday in the target timezone
41
- const yesterdayDate = new Date(Date.UTC(nowYear, nowMonth - 1, nowDay - 1));
36
+ // -24h from now always lands in yesterday for any fixed-offset timezone.
37
+ // Date.UTC(localYear, localMonth-1, localDay-1) was wrong: it creates UTC
38
+ // midnight from local date parts, which represents the previous evening in
39
+ // timezones behind UTC (e.g. UTC-3 São Paulo).
40
+ const yesterdayDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);
42
41
  const yesterdayParts = formatter.formatToParts(yesterdayDate);
43
42
  const yesterdayYear = getPartValue(yesterdayParts, "year");
44
43
  const yesterdayMonth = getPartValue(yesterdayParts, "month");