@checkdigit/time 4.0.0-PR.18-81a3 → 4.0.0-PR.18-e0fa

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.
Files changed (250) hide show
  1. package/README.md +0 -2
  2. package/package.json +1 -1
  3. package/src/date-fns/_lib/addLeadingZeros/test.mts +0 -12
  4. package/src/date-fns/_lib/getRoundingMethod/test.mts +0 -50
  5. package/src/date-fns/_lib/getTimezoneOffsetInMilliseconds/test.mts +0 -25
  6. package/src/date-fns/add/test.mts +0 -95
  7. package/src/date-fns/addBusinessDays/test.mts +0 -78
  8. package/src/date-fns/addDays/test.mts +0 -90
  9. package/src/date-fns/addHours/test.mts +0 -30
  10. package/src/date-fns/addISOWeekYears/test.mts +0 -41
  11. package/src/date-fns/addMilliseconds/test.mts +0 -30
  12. package/src/date-fns/addMinutes/test.mts +0 -30
  13. package/src/date-fns/addMonths/test.mts +0 -123
  14. package/src/date-fns/addQuarters/test.mts +0 -47
  15. package/src/date-fns/addSeconds/test.mts +0 -30
  16. package/src/date-fns/addWeeks/test.mts +0 -30
  17. package/src/date-fns/addYears/test.mts +0 -46
  18. package/src/date-fns/areIntervalsOverlapping/test.mts +0 -231
  19. package/src/date-fns/clamp/test.mts +0 -36
  20. package/src/date-fns/closestIndexTo/test.mts +0 -51
  21. package/src/date-fns/closestTo/test.mts +0 -49
  22. package/src/date-fns/compareAsc/test.mts +0 -58
  23. package/src/date-fns/compareDesc/test.mts +0 -58
  24. package/src/date-fns/constructFrom/test.mts +0 -47
  25. package/src/date-fns/constructNow/test.mts +0 -37
  26. package/src/date-fns/daysToWeeks/test.mts +0 -36
  27. package/src/date-fns/differenceInBusinessDays/test.mts +0 -102
  28. package/src/date-fns/differenceInCalendarDays/test.mts +0 -206
  29. package/src/date-fns/differenceInCalendarISOWeekYears/test.mts +0 -93
  30. package/src/date-fns/differenceInCalendarISOWeeks/test.mts +0 -89
  31. package/src/date-fns/differenceInCalendarMonths/test.mts +0 -82
  32. package/src/date-fns/differenceInCalendarQuarters/test.mts +0 -82
  33. package/src/date-fns/differenceInCalendarWeeks/test.mts +0 -136
  34. package/src/date-fns/differenceInCalendarYears/test.mts +0 -82
  35. package/src/date-fns/differenceInDays/test.mts +0 -175
  36. package/src/date-fns/differenceInHours/test.mts +0 -122
  37. package/src/date-fns/differenceInISOWeekYears/test.mts +0 -93
  38. package/src/date-fns/differenceInMilliseconds/test.mts +0 -53
  39. package/src/date-fns/differenceInMinutes/test.mts +0 -123
  40. package/src/date-fns/differenceInMonths/test.mts +0 -121
  41. package/src/date-fns/differenceInQuarters/test.mts +0 -109
  42. package/src/date-fns/differenceInSeconds/test.mts +0 -144
  43. package/src/date-fns/differenceInWeeks/test.mts +0 -111
  44. package/src/date-fns/differenceInYears/test.mts +0 -97
  45. package/src/date-fns/eachDayOfInterval/test.mts +0 -164
  46. package/src/date-fns/eachHourOfInterval/test.mts +0 -154
  47. package/src/date-fns/eachMinuteOfInterval/test.mts +0 -159
  48. package/src/date-fns/eachMonthOfInterval/test.mts +0 -151
  49. package/src/date-fns/eachQuarterOfInterval/test.mts +0 -136
  50. package/src/date-fns/eachWeekOfInterval/test.mts +0 -177
  51. package/src/date-fns/eachWeekendOfInterval/test.mts +0 -67
  52. package/src/date-fns/eachWeekendOfMonth/test.mts +0 -23
  53. package/src/date-fns/eachWeekendOfYear/test.mts +0 -18
  54. package/src/date-fns/eachYearOfInterval/test.mts +0 -136
  55. package/src/date-fns/endOfDay/test.mts +0 -27
  56. package/src/date-fns/endOfDecade/test.mts +0 -32
  57. package/src/date-fns/endOfHour/test.mts +0 -26
  58. package/src/date-fns/endOfISOWeek/test.mts +0 -27
  59. package/src/date-fns/endOfISOWeekYear/test.mts +0 -36
  60. package/src/date-fns/endOfMinute/test.mts +0 -26
  61. package/src/date-fns/endOfMonth/test.mts +0 -41
  62. package/src/date-fns/endOfQuarter/test.mts +0 -27
  63. package/src/date-fns/endOfSecond/test.mts +0 -26
  64. package/src/date-fns/endOfToday/test.mts +0 -19
  65. package/src/date-fns/endOfTomorrow/test.mts +0 -29
  66. package/src/date-fns/endOfWeek/test.mts +0 -86
  67. package/src/date-fns/endOfYear/test.mts +0 -27
  68. package/src/date-fns/endOfYesterday/test.mts +0 -29
  69. package/src/date-fns/format/test.mts +0 -909
  70. package/src/date-fns/formatDistance/test.mts +0 -189
  71. package/src/date-fns/formatDistanceStrict/test.mts +0 -329
  72. package/src/date-fns/formatDistanceToNow/test.mts +0 -196
  73. package/src/date-fns/formatDistanceToNowStrict/test.mts +0 -293
  74. package/src/date-fns/formatDuration/test.mts +0 -74
  75. package/src/date-fns/formatISO/test.mts +0 -55
  76. package/src/date-fns/formatISO9075/test.mts +0 -35
  77. package/src/date-fns/formatISODuration/test.mts +0 -75
  78. package/src/date-fns/formatRFC3339/test.mts +0 -41
  79. package/src/date-fns/formatRFC7231/test.mts +0 -18
  80. package/src/date-fns/formatRelative/test.mts +0 -92
  81. package/src/date-fns/fp/_lib/convertToFP/test.mts +0 -114
  82. package/src/date-fns/fromUnixTime/test.mts +0 -14
  83. package/src/date-fns/getDate/test.mts +0 -19
  84. package/src/date-fns/getDay/test.mts +0 -19
  85. package/src/date-fns/getDayOfYear/test.mts +0 -27
  86. package/src/date-fns/getDaysInMonth/test.mts +0 -33
  87. package/src/date-fns/getDaysInYear/test.mts +0 -35
  88. package/src/date-fns/getDecade/test.mts +0 -24
  89. package/src/date-fns/getDefaultOptions/test.mts +0 -58
  90. package/src/date-fns/getHours/test.mts +0 -19
  91. package/src/date-fns/getISODay/test.mts +0 -24
  92. package/src/date-fns/getISOWeek/test.mts +0 -54
  93. package/src/date-fns/getISOWeekYear/test.mts +0 -27
  94. package/src/date-fns/getISOWeeksInYear/test.mts +0 -37
  95. package/src/date-fns/getMilliseconds/test.mts +0 -19
  96. package/src/date-fns/getMinutes/test.mts +0 -19
  97. package/src/date-fns/getMonth/test.mts +0 -19
  98. package/src/date-fns/getOverlappingDaysInIntervals/test.mts +0 -243
  99. package/src/date-fns/getQuarter/test.mts +0 -19
  100. package/src/date-fns/getSeconds/test.mts +0 -19
  101. package/src/date-fns/getTime/test.mts +0 -21
  102. package/src/date-fns/getUnixTime/test.mts +0 -26
  103. package/src/date-fns/getWeek/test.mts +0 -56
  104. package/src/date-fns/getWeekOfMonth/test.mts +0 -75
  105. package/src/date-fns/getWeekYear/test.mts +0 -49
  106. package/src/date-fns/getWeeksInMonth/test.mts +0 -51
  107. package/src/date-fns/getYear/test.mts +0 -19
  108. package/src/date-fns/hoursToMilliseconds/test.mts +0 -23
  109. package/src/date-fns/hoursToMinutes/test.mts +0 -25
  110. package/src/date-fns/hoursToSeconds/test.mts +0 -25
  111. package/src/date-fns/interval/test.mts +0 -42
  112. package/src/date-fns/intervalToDuration/test.mts +0 -235
  113. package/src/date-fns/intlFormat/test.mts +0 -88
  114. package/src/date-fns/intlFormatDistance/test.mts +0 -588
  115. package/src/date-fns/isAfter/test.mts +0 -39
  116. package/src/date-fns/isBefore/test.mts +0 -39
  117. package/src/date-fns/isDate/test.mts +0 -72
  118. package/src/date-fns/isEqual/test.mts +0 -34
  119. package/src/date-fns/isExists/test.mts +0 -14
  120. package/src/date-fns/isFirstDayOfMonth/test.mts +0 -25
  121. package/src/date-fns/isFriday/test.mts +0 -24
  122. package/src/date-fns/isFuture/test.mts +0 -34
  123. package/src/date-fns/isLastDayOfMonth/test.mts +0 -25
  124. package/src/date-fns/isLeapYear/test.mts +0 -35
  125. package/src/date-fns/isMatch/test.mts +0 -27
  126. package/src/date-fns/isMonday/test.mts +0 -24
  127. package/src/date-fns/isPast/test.mts +0 -34
  128. package/src/date-fns/isSameDay/test.mts +0 -37
  129. package/src/date-fns/isSameHour/test.mts +0 -37
  130. package/src/date-fns/isSameISOWeek/test.mts +0 -34
  131. package/src/date-fns/isSameISOWeekYear/test.mts +0 -48
  132. package/src/date-fns/isSameMinute/test.mts +0 -37
  133. package/src/date-fns/isSameMonth/test.mts +0 -34
  134. package/src/date-fns/isSameQuarter/test.mts +0 -34
  135. package/src/date-fns/isSameSecond/test.mts +0 -43
  136. package/src/date-fns/isSameWeek/test.mts +0 -58
  137. package/src/date-fns/isSameYear/test.mts +0 -34
  138. package/src/date-fns/isSaturday/test.mts +0 -24
  139. package/src/date-fns/isSunday/test.mts +0 -24
  140. package/src/date-fns/isThisHour/test.mts +0 -34
  141. package/src/date-fns/isThisISOWeek/test.mts +0 -34
  142. package/src/date-fns/isThisMinute/test.mts +0 -34
  143. package/src/date-fns/isThisMonth/test.mts +0 -34
  144. package/src/date-fns/isThisQuarter/test.mts +0 -34
  145. package/src/date-fns/isThisSecond/test.mts +0 -34
  146. package/src/date-fns/isThisWeek/test.mts +0 -39
  147. package/src/date-fns/isThisYear/test.mts +0 -34
  148. package/src/date-fns/isThursday/test.mts +0 -24
  149. package/src/date-fns/isToday/test.mts +0 -34
  150. package/src/date-fns/isTomorrow/test.mts +0 -34
  151. package/src/date-fns/isTuesday/test.mts +0 -24
  152. package/src/date-fns/isValid/test.mts +0 -24
  153. package/src/date-fns/isWednesday/test.mts +0 -24
  154. package/src/date-fns/isWeekend/test.mts +0 -24
  155. package/src/date-fns/isWithinInterval/test.mts +0 -92
  156. package/src/date-fns/isYesterday/test.mts +0 -34
  157. package/src/date-fns/lastDayOfDecade/test.mts +0 -32
  158. package/src/date-fns/lastDayOfISOWeek/test.mts +0 -27
  159. package/src/date-fns/lastDayOfISOWeekYear/test.mts +0 -36
  160. package/src/date-fns/lastDayOfMonth/test.mts +0 -41
  161. package/src/date-fns/lastDayOfQuarter/test.mts +0 -27
  162. package/src/date-fns/lastDayOfWeek/test.mts +0 -86
  163. package/src/date-fns/lastDayOfYear/test.mts +0 -27
  164. package/src/date-fns/lightFormat/test.mts +0 -126
  165. package/src/date-fns/max/test.mts +0 -34
  166. package/src/date-fns/milliseconds/test.mts +0 -62
  167. package/src/date-fns/millisecondsToHours/test.mts +0 -24
  168. package/src/date-fns/millisecondsToMinutes/test.mts +0 -24
  169. package/src/date-fns/millisecondsToSeconds/test.mts +0 -24
  170. package/src/date-fns/min/test.mts +0 -34
  171. package/src/date-fns/minutesToHours/test.mts +0 -24
  172. package/src/date-fns/minutesToMilliseconds/test.mts +0 -23
  173. package/src/date-fns/minutesToSeconds/test.mts +0 -23
  174. package/src/date-fns/monthsToQuarters/test.mts +0 -24
  175. package/src/date-fns/monthsToYears/test.mts +0 -24
  176. package/src/date-fns/nextDay/test.mts +0 -44
  177. package/src/date-fns/nextFriday/test.mts +0 -24
  178. package/src/date-fns/nextMonday/test.mts +0 -24
  179. package/src/date-fns/nextSaturday/test.mts +0 -24
  180. package/src/date-fns/nextSunday/test.mts +0 -24
  181. package/src/date-fns/nextThursday/test.mts +0 -24
  182. package/src/date-fns/nextTuesday/test.mts +0 -23
  183. package/src/date-fns/nextWednesday/test.mts +0 -24
  184. package/src/date-fns/parse/test.mts +0 -2202
  185. package/src/date-fns/parseISO/test.mts +0 -362
  186. package/src/date-fns/parseJSON/test.mts +0 -129
  187. package/src/date-fns/previousDay/test.mts +0 -42
  188. package/src/date-fns/previousFriday/test.mts +0 -22
  189. package/src/date-fns/previousMonday/test.mts +0 -22
  190. package/src/date-fns/previousSaturday/test.mts +0 -22
  191. package/src/date-fns/previousSunday/test.mts +0 -22
  192. package/src/date-fns/previousThursday/test.mts +0 -22
  193. package/src/date-fns/previousTuesday/test.mts +0 -22
  194. package/src/date-fns/previousWednesday/test.mts +0 -22
  195. package/src/date-fns/quartersToMonths/test.mts +0 -24
  196. package/src/date-fns/quartersToYears/test.mts +0 -24
  197. package/src/date-fns/roundToNearestHours/test.mts +0 -200
  198. package/src/date-fns/roundToNearestMinutes/test.mts +0 -208
  199. package/src/date-fns/secondsToHours/test.mts +0 -24
  200. package/src/date-fns/secondsToMilliseconds/test.mts +0 -14
  201. package/src/date-fns/secondsToMinutes/test.mts +0 -24
  202. package/src/date-fns/set/test.mts +0 -121
  203. package/src/date-fns/setDate/test.mts +0 -30
  204. package/src/date-fns/setDay/test.mts +0 -112
  205. package/src/date-fns/setDayOfYear/test.mts +0 -30
  206. package/src/date-fns/setDefaultOptions/test.mts +0 -498
  207. package/src/date-fns/setHours/test.mts +0 -30
  208. package/src/date-fns/setISODay/test.mts +0 -59
  209. package/src/date-fns/setISOWeek/test.mts +0 -41
  210. package/src/date-fns/setISOWeekYear/test.mts +0 -50
  211. package/src/date-fns/setMilliseconds/test.mts +0 -30
  212. package/src/date-fns/setMinutes/test.mts +0 -30
  213. package/src/date-fns/setMonth/test.mts +0 -46
  214. package/src/date-fns/setQuarter/test.mts +0 -46
  215. package/src/date-fns/setSeconds/test.mts +0 -30
  216. package/src/date-fns/setWeek/test.mts +0 -63
  217. package/src/date-fns/setWeekYear/test.mts +0 -72
  218. package/src/date-fns/setYear/test.mts +0 -30
  219. package/src/date-fns/startOfDay/test.mts +0 -27
  220. package/src/date-fns/startOfDecade/test.mts +0 -32
  221. package/src/date-fns/startOfHour/test.mts +0 -27
  222. package/src/date-fns/startOfISOWeek/test.mts +0 -27
  223. package/src/date-fns/startOfISOWeekYear/test.mts +0 -41
  224. package/src/date-fns/startOfMinute/test.mts +0 -27
  225. package/src/date-fns/startOfMonth/test.mts +0 -27
  226. package/src/date-fns/startOfQuarter/test.mts +0 -27
  227. package/src/date-fns/startOfSecond/test.mts +0 -27
  228. package/src/date-fns/startOfToday/test.mts +0 -19
  229. package/src/date-fns/startOfTomorrow/test.mts +0 -29
  230. package/src/date-fns/startOfWeek/test.mts +0 -86
  231. package/src/date-fns/startOfWeekYear/test.mts +0 -58
  232. package/src/date-fns/startOfYear/test.mts +0 -38
  233. package/src/date-fns/startOfYesterday/test.mts +0 -29
  234. package/src/date-fns/sub/test.mts +0 -83
  235. package/src/date-fns/subBusinessDays/test.mts +0 -40
  236. package/src/date-fns/subDays/test.mts +0 -30
  237. package/src/date-fns/subHours/test.mts +0 -30
  238. package/src/date-fns/subISOWeekYears/test.mts +0 -41
  239. package/src/date-fns/subMilliseconds/test.mts +0 -30
  240. package/src/date-fns/subMinutes/test.mts +0 -30
  241. package/src/date-fns/subMonths/test.mts +0 -47
  242. package/src/date-fns/subQuarters/test.mts +0 -47
  243. package/src/date-fns/subSeconds/test.mts +0 -30
  244. package/src/date-fns/subWeeks/test.mts +0 -30
  245. package/src/date-fns/subYears/test.mts +0 -46
  246. package/src/date-fns/toDate/test.mts +0 -35
  247. package/src/date-fns/weeksToDays/test.mts +0 -24
  248. package/src/date-fns/yearsToDays/test.mts +0 -24
  249. package/src/date-fns/yearsToMonths/test.mts +0 -24
  250. package/src/date-fns/yearsToQuarters/test.mts +0 -24
@@ -1,82 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInCalendarMonths } from './index';
3
-
4
- describe('differenceInCalendarMonths', () => {
5
- it('returns the number of calendar months between the given dates', () => {
6
- const result = differenceInCalendarMonths(
7
- new Date(2012, 6 /* Jul */, 2, 18, 0),
8
- new Date(2011, 6 /* Jul */, 2, 6, 0),
9
- );
10
- expect(result).toBe(12);
11
- });
12
-
13
- it('returns a negative number if the time value of the first date is smaller', () => {
14
- const result = differenceInCalendarMonths(
15
- new Date(2011, 6 /* Jul */, 2, 6, 0),
16
- new Date(2012, 6 /* Jul */, 2, 18, 0),
17
- );
18
- expect(result).toBe(-12);
19
- });
20
-
21
- it('accepts timestamps', () => {
22
- const result = differenceInCalendarMonths(
23
- new Date(2014, 7 /* Aug */, 2).getTime(),
24
- new Date(2010, 6 /* Jul */, 2).getTime(),
25
- );
26
- expect(result).toBe(49);
27
- });
28
-
29
- describe('edge cases', () => {
30
- it('the difference is less than a month, but the given dates are in different calendar months', () => {
31
- const result = differenceInCalendarMonths(new Date(2014, 8 /* Sep */, 1), new Date(2014, 7 /* Aug */, 31));
32
- expect(result).toBe(1);
33
- });
34
-
35
- it('the same for the swapped dates', () => {
36
- const result = differenceInCalendarMonths(new Date(2014, 7 /* Aug */, 31), new Date(2014, 8 /* Sep */, 1));
37
- expect(result).toBe(-1);
38
- });
39
-
40
- it('the days of months of the given dates are the same', () => {
41
- const result = differenceInCalendarMonths(new Date(2014, 8 /* Sep */, 6), new Date(2014, 7 /* Aug */, 6));
42
- expect(result).toBe(1);
43
- });
44
-
45
- it('the given dates are the same', () => {
46
- const result = differenceInCalendarMonths(
47
- new Date(2014, 8 /* Sep */, 5, 0, 0),
48
- new Date(2014, 8 /* Sep */, 5, 0, 0),
49
- );
50
- expect(result).toBe(0);
51
- });
52
-
53
- it('does not return -0 when the given dates are the same', () => {
54
- function isNegativeZero(x: number): boolean {
55
- return x === 0 && 1 / x < 0;
56
- }
57
-
58
- const result = differenceInCalendarMonths(
59
- new Date(2014, 8 /* Sep */, 5, 0, 0),
60
- new Date(2014, 8 /* Sep */, 5, 0, 0),
61
- );
62
-
63
- const resultIsNegative = isNegativeZero(result);
64
- expect(resultIsNegative).toBe(false);
65
- });
66
- });
67
-
68
- it('returns NaN if the first date is `Invalid Date`', () => {
69
- const result = differenceInCalendarMonths(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
70
- expect(isNaN(result)).toBe(true);
71
- });
72
-
73
- it('returns NaN if the second date is `Invalid Date`', () => {
74
- const result = differenceInCalendarMonths(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
75
- expect(isNaN(result)).toBe(true);
76
- });
77
-
78
- it('returns NaN if the both dates are `Invalid Date`', () => {
79
- const result = differenceInCalendarMonths(new Date(NaN), new Date(NaN));
80
- expect(isNaN(result)).toBe(true);
81
- });
82
- });
@@ -1,82 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInCalendarQuarters } from './index';
3
-
4
- describe('differenceInCalendarQuarters', () => {
5
- it('returns the number of calendar quarters between the given dates', () => {
6
- const result = differenceInCalendarQuarters(
7
- new Date(2012, 6 /* Jul */, 2, 18, 0),
8
- new Date(2011, 6 /* Jul */, 2, 6, 0),
9
- );
10
- expect(result).toBe(4);
11
- });
12
-
13
- it('returns a negative number if the time value of the first date is smaller', () => {
14
- const result = differenceInCalendarQuarters(
15
- new Date(2011, 6 /* Jul */, 2, 6, 0),
16
- new Date(2012, 6 /* Jul */, 2, 18, 0),
17
- );
18
- expect(result).toBe(-4);
19
- });
20
-
21
- it('accepts timestamps', () => {
22
- const result = differenceInCalendarQuarters(
23
- new Date(2014, 9 /* Oct */, 2).getTime(),
24
- new Date(2010, 6 /* Jul */, 2).getTime(),
25
- );
26
- expect(result).toBe(17);
27
- });
28
-
29
- describe('edge cases', () => {
30
- it('the difference is less than a quarter, but the given dates are in different calendar quarters', () => {
31
- const result = differenceInCalendarQuarters(new Date(2014, 6 /* Jul */, 1), new Date(2014, 5 /* Jun */, 30));
32
- expect(result).toBe(1);
33
- });
34
-
35
- it('the same for the swapped dates', () => {
36
- const result = differenceInCalendarQuarters(new Date(2014, 5 /* Jun */, 30), new Date(2014, 6 /* Jul */, 1));
37
- expect(result).toBe(-1);
38
- });
39
-
40
- it('the days of months of the given dates are the same', () => {
41
- const result = differenceInCalendarQuarters(new Date(2014, 3 /* Apr */, 6), new Date(2014, 0 /* Jan */, 6));
42
- expect(result).toBe(1);
43
- });
44
-
45
- it('the given dates are the same', () => {
46
- const result = differenceInCalendarQuarters(
47
- new Date(2014, 8 /* Sep */, 5, 0, 0),
48
- new Date(2014, 8 /* Sep */, 5, 0, 0),
49
- );
50
- expect(result).toBe(0);
51
- });
52
-
53
- it('does not return -0 when the given dates are the same', () => {
54
- function isNegativeZero(x: number): boolean {
55
- return x === 0 && 1 / x < 0;
56
- }
57
-
58
- const result = differenceInCalendarQuarters(
59
- new Date(2014, 8 /* Sep */, 5, 0, 0),
60
- new Date(2014, 8 /* Sep */, 5, 0, 0),
61
- );
62
-
63
- const resultIsNegative = isNegativeZero(result);
64
- expect(resultIsNegative).toBe(false);
65
- });
66
- });
67
-
68
- it('returns NaN if the first date is `Invalid Date`', () => {
69
- const result = differenceInCalendarQuarters(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
70
- expect(isNaN(result)).toBe(true);
71
- });
72
-
73
- it('returns NaN if the second date is `Invalid Date`', () => {
74
- const result = differenceInCalendarQuarters(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
75
- expect(isNaN(result)).toBe(true);
76
- });
77
-
78
- it('returns NaN if the both dates are `Invalid Date`', () => {
79
- const result = differenceInCalendarQuarters(new Date(NaN), new Date(NaN));
80
- expect(isNaN(result)).toBe(true);
81
- });
82
- });
@@ -1,136 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInCalendarWeeks } from './index';
3
-
4
- describe('differenceInCalendarWeeks', () => {
5
- it('returns the number of calendar weeks between the given dates', () => {
6
- const result = differenceInCalendarWeeks(
7
- new Date(2014, 6 /* Jul */, 8, 18, 0),
8
- new Date(2014, 5 /* Jun */, 29, 6, 0),
9
- );
10
- expect(result).toBe(1);
11
- });
12
-
13
- it('allows to specify which day is the first day of the week', () => {
14
- const result = differenceInCalendarWeeks(
15
- new Date(2014, 6 /* Jul */, 8, 18, 0),
16
- new Date(2014, 5 /* Jun */, 29, 6, 0),
17
- { weekStartsOn: 1 },
18
- );
19
- expect(result).toBe(2);
20
- });
21
-
22
- it('allows to specify which day is the first day of the week in locale', () => {
23
- const result = differenceInCalendarWeeks(
24
- new Date(2014, 6 /* Jul */, 8, 18, 0),
25
- new Date(2014, 5 /* Jun */, 29, 6, 0),
26
- {
27
- locale: {
28
- options: { weekStartsOn: 1 },
29
- },
30
- },
31
- );
32
- expect(result).toBe(2);
33
- });
34
-
35
- it('`options.weekStartsOn` overwrites the first day of the week specified in locale', () => {
36
- const result = differenceInCalendarWeeks(
37
- new Date(2014, 6 /* Jul */, 8, 18, 0),
38
- new Date(2014, 5 /* Jun */, 29, 6, 0),
39
- {
40
- weekStartsOn: 1,
41
- locale: {
42
- options: { weekStartsOn: 0 },
43
- },
44
- },
45
- );
46
- expect(result).toBe(2);
47
- });
48
-
49
- it('returns a positive number if the time value of the second date is smaller', () => {
50
- const result = differenceInCalendarWeeks(
51
- new Date(2014, 6 /* Jul */, 8, 18, 0),
52
- new Date(2014, 5 /* Jun */, 29, 6, 0),
53
- {
54
- weekStartsOn: 1,
55
- },
56
- );
57
- expect(result).toBe(2);
58
- });
59
-
60
- it('returns a negative number if the time value of the first date is smaller', () => {
61
- const result = differenceInCalendarWeeks(
62
- new Date(2014, 5 /* Jun */, 29, 6, 0),
63
- new Date(2014, 6 /* Jul */, 8, 18, 0),
64
- );
65
- expect(result).toBe(-1);
66
- });
67
-
68
- it('accepts timestamps', () => {
69
- const result = differenceInCalendarWeeks(
70
- new Date(2014, 6 /* Jul */, 12).getTime(),
71
- new Date(2014, 6 /* Jul */, 2).getTime(),
72
- );
73
- expect(result).toBe(1);
74
- });
75
-
76
- describe('edge cases', () => {
77
- it('the difference is less than a week, but the given dates are in different calendar weeks', () => {
78
- const result = differenceInCalendarWeeks(new Date(2014, 6 /* Jul */, 6), new Date(2014, 6 /* Jul */, 5));
79
- expect(result).toBe(1);
80
- });
81
-
82
- it('the same for the swapped dates', () => {
83
- const result = differenceInCalendarWeeks(new Date(2014, 6 /* Jul */, 5), new Date(2014, 6 /* Jul */, 6));
84
- expect(result).toBe(-1);
85
- });
86
-
87
- it('the days of weeks of the given dates are the same', () => {
88
- const result = differenceInCalendarWeeks(new Date(2014, 6 /* Jul */, 9), new Date(2014, 6 /* Jul */, 2));
89
- expect(result).toBe(1);
90
- });
91
-
92
- it('the given dates are the same', () => {
93
- const result = differenceInCalendarWeeks(
94
- new Date(2014, 8 /* Sep */, 5, 0, 0),
95
- new Date(2014, 8 /* Sep */, 5, 0, 0),
96
- );
97
- expect(result).toBe(0);
98
- });
99
-
100
- it('does not return -0 when the given dates are the same', () => {
101
- function isNegativeZero(x: number): boolean {
102
- return x === 0 && 1 / x < 0;
103
- }
104
-
105
- const result = differenceInCalendarWeeks(
106
- new Date(2014, 8 /* Sep */, 5, 0, 0),
107
- new Date(2014, 8 /* Sep */, 5, 0, 0),
108
- );
109
-
110
- const resultIsNegative = isNegativeZero(result);
111
- expect(resultIsNegative).toBe(false);
112
- });
113
-
114
- it('properly works with negative numbers', () => {
115
- const a = new Date(2014, 6 /* Jul */, 9);
116
- const b = new Date(2014, 6 /* Jul */, 19);
117
- expect(differenceInCalendarWeeks(b, a)).toBe(1);
118
- expect(differenceInCalendarWeeks(a, b)).toBe(-1);
119
- });
120
- });
121
-
122
- it('returns NaN if the first date is `Invalid Date`', () => {
123
- const result = differenceInCalendarWeeks(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
124
- expect(isNaN(result)).toBe(true);
125
- });
126
-
127
- it('returns NaN if the second date is `Invalid Date`', () => {
128
- const result = differenceInCalendarWeeks(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
129
- expect(isNaN(result)).toBe(true);
130
- });
131
-
132
- it('returns NaN if the both dates are `Invalid Date`', () => {
133
- const result = differenceInCalendarWeeks(new Date(NaN), new Date(NaN));
134
- expect(isNaN(result)).toBe(true);
135
- });
136
- });
@@ -1,82 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInCalendarYears } from './index';
3
-
4
- describe('differenceInCalendarYears', () => {
5
- it('returns the number of calendar years between the given dates', () => {
6
- const result = differenceInCalendarYears(
7
- new Date(2012, 6 /* Jul */, 2, 18, 0),
8
- new Date(2011, 6 /* Jul */, 2, 6, 0),
9
- );
10
- expect(result).toBe(1);
11
- });
12
-
13
- it('returns a negative number if the time value of the first date is smaller', () => {
14
- const result = differenceInCalendarYears(
15
- new Date(2011, 6 /* Jul */, 2, 6, 0),
16
- new Date(2012, 6 /* Jul */, 2, 18, 0),
17
- );
18
- expect(result).toBe(-1);
19
- });
20
-
21
- it('accepts timestamps', () => {
22
- const result = differenceInCalendarYears(
23
- new Date(2014, 6 /* Jul */, 2).getTime(),
24
- new Date(2010, 6 /* Jul */, 2).getTime(),
25
- );
26
- expect(result).toBe(4);
27
- });
28
-
29
- describe('edge cases', () => {
30
- it('the difference is less than a year, but the given dates are in different calendar years', () => {
31
- const result = differenceInCalendarYears(new Date(2015, 0 /* Jan */, 1), new Date(2014, 11 /* Dec */, 31));
32
- expect(result).toBe(1);
33
- });
34
-
35
- it('the same for the swapped dates', () => {
36
- const result = differenceInCalendarYears(new Date(2014, 11 /* Dec */, 31), new Date(2015, 0 /* Jan */, 1));
37
- expect(result).toBe(-1);
38
- });
39
-
40
- it('the days and months of the given dates are the same', () => {
41
- const result = differenceInCalendarYears(new Date(2014, 8 /* Sep */, 5), new Date(2012, 8 /* Sep */, 5));
42
- expect(result).toBe(2);
43
- });
44
-
45
- it('the given dates are the same', () => {
46
- const result = differenceInCalendarYears(
47
- new Date(2014, 8 /* Sep */, 5, 0, 0),
48
- new Date(2014, 8 /* Sep */, 5, 0, 0),
49
- );
50
- expect(result).toBe(0);
51
- });
52
-
53
- it('does not return -0 when the given dates are the same', () => {
54
- function isNegativeZero(x: number): boolean {
55
- return x === 0 && 1 / x < 0;
56
- }
57
-
58
- const result = differenceInCalendarYears(
59
- new Date(2014, 8 /* Sep */, 5, 0, 0),
60
- new Date(2014, 8 /* Sep */, 5, 0, 0),
61
- );
62
-
63
- const resultIsNegative = isNegativeZero(result);
64
- expect(resultIsNegative).toBe(false);
65
- });
66
- });
67
-
68
- it('returns NaN if the first date is `Invalid Date`', () => {
69
- const result = differenceInCalendarYears(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
70
- expect(isNaN(result)).toBe(true);
71
- });
72
-
73
- it('returns NaN if the second date is `Invalid Date`', () => {
74
- const result = differenceInCalendarYears(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
75
- expect(isNaN(result)).toBe(true);
76
- });
77
-
78
- it('returns NaN if the both dates are `Invalid Date`', () => {
79
- const result = differenceInCalendarYears(new Date(NaN), new Date(NaN));
80
- expect(isNaN(result)).toBe(true);
81
- });
82
- });
@@ -1,175 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInDays } from './index';
3
- import { getDstTransitions } from '../_test/dst/tzOffsetTransitions';
4
-
5
- describe('differenceInDays', () => {
6
- it('returns the number of full days between the given dates', () => {
7
- const result = differenceInDays(new Date(2012, 6 /* Jul */, 2, 18, 0), new Date(2011, 6 /* Jul */, 2, 6, 0));
8
- expect(result).toBe(366);
9
- });
10
-
11
- it('returns a negative number if the time value of the first date is smaller', () => {
12
- const result = differenceInDays(new Date(2011, 6 /* Jul */, 2, 6, 0), new Date(2012, 6 /* Jul */, 2, 18, 0));
13
- expect(result).toBe(-366);
14
- });
15
-
16
- it('accepts timestamps', () => {
17
- const result = differenceInDays(
18
- new Date(2014, 8 /* Sep */, 5, 18, 0).getTime(),
19
- new Date(2014, 8 /* Sep */, 4, 6, 0).getTime(),
20
- );
21
- expect(result).toBe(1);
22
- });
23
-
24
- describe('edge cases', () => {
25
- it('the difference is less than a day, but the given dates are in different calendar days', () => {
26
- const result = differenceInDays(new Date(2014, 8 /* Sep */, 5, 0, 0), new Date(2014, 8 /* Sep */, 4, 23, 59));
27
- expect(result).toBe(0);
28
- });
29
-
30
- it('the same for the swapped dates', () => {
31
- const result = differenceInDays(new Date(2014, 8 /* Sep */, 4, 23, 59), new Date(2014, 8 /* Sep */, 5, 0, 0));
32
- expect(result).toBe(0);
33
- });
34
-
35
- it('the time values of the given dates are the same', () => {
36
- const result = differenceInDays(new Date(2014, 8 /* Sep */, 6, 0, 0), new Date(2014, 8 /* Sep */, 5, 0, 0));
37
- expect(result).toBe(1);
38
- });
39
-
40
- it('the given dates are the same', () => {
41
- const result = differenceInDays(new Date(2014, 8 /* Sep */, 5, 0, 0), new Date(2014, 8 /* Sep */, 5, 0, 0));
42
- expect(result).toBe(0);
43
- });
44
-
45
- const dstTransitions = getDstTransitions(2017);
46
- const dstOnly = dstTransitions.start && dstTransitions.end ? it : it.skip;
47
- const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || process.env.tz;
48
- dstOnly(`works across DST start & end in local timezone: ${tz || '(unknown)'}`, () => {
49
- const { start, end } = dstTransitions;
50
- const HOUR = 1000 * 60 * 60;
51
- const MINUTE = 1000 * 60;
52
- function sameTime(t1: Date, t2: Date): boolean {
53
- return (
54
- t1.getHours() === t2.getHours() &&
55
- t1.getMinutes() === t2.getMinutes() &&
56
- t1.getSeconds() === t2.getSeconds() &&
57
- t1.getMilliseconds() === t2.getMilliseconds()
58
- );
59
- }
60
-
61
- expect(start).not.toBe(undefined);
62
- expect(end).not.toBe(undefined);
63
-
64
- if (start === undefined || end === undefined) {
65
- return;
66
- }
67
-
68
- // It's usually 1 hour, but for some timezones, e.g. Australia/Lord_Howe, it is 30 minutes
69
- const dstOffset = (end.getTimezoneOffset() - start.getTimezoneOffset()) * MINUTE;
70
-
71
- // TEST DST START (SPRING)
72
-
73
- // anchor to one hour before the boundary
74
- {
75
- const a = new Date(start.getTime() - HOUR); // 1 hour before DST
76
- const b = new Date(a.getTime() + 24 * HOUR - dstOffset); // 1 day later, same local time
77
- const c = new Date(a.getTime() + 48 * HOUR - dstOffset); // 2 days later, same local time
78
-
79
- expect(sameTime(a, b)).toBe(true);
80
- expect(sameTime(a, c)).toBe(true);
81
- expect(sameTime(b, c)).toBe(true);
82
- expect(differenceInDays(c, b)).toBe(1); // normal 24-hour day
83
- expect(differenceInDays(b, a)).toBe(1); // 23 hours -> 1 day
84
- expect(differenceInDays(c, a)).toBe(2); // 47 hours -> 2 days
85
- }
86
- // anchor exactly, the boundary
87
- {
88
- const a = start; // exactly when DST starts
89
- const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
90
- const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
91
-
92
- expect(sameTime(a, b)).toBe(true);
93
- expect(sameTime(a, c)).toBe(true);
94
- expect(sameTime(b, c)).toBe(true);
95
- expect(differenceInDays(c, b)).toBe(1); // normal 24-hour day
96
- expect(differenceInDays(b, a)).toBe(1); // normal 24-hour day
97
- expect(differenceInDays(c, a)).toBe(2); // 2 normal 24-hour days
98
- }
99
-
100
- // TEST DST END (FALL)
101
-
102
- // make sure that diffs across a "fall back" DST boundary won't report a full day
103
- // until 25 hours have elapsed.
104
- {
105
- const a = new Date(end.getTime() - HOUR / 2); // 1 hour before Standard Time starts
106
- const b = new Date(a.getTime() + 24 * HOUR + dstOffset - 15 * MINUTE); // 1 day later, 15 mins earlier local time
107
- const c = new Date(a.getTime() + 48 * HOUR + dstOffset - 15 * MINUTE); // 2 days later, 15 mins earlier local time
108
-
109
- expect(differenceInDays(c, b)).toBe(1); // normal 24-hour day
110
- expect(differenceInDays(b, a)).toBe(0); // 24.75 hours -> 0 full days (because hour lost to DST)
111
- expect(differenceInDays(c, a)).toBe(1); // 48.75 hours -> 1 full day (because hour lost to DST)
112
- }
113
- // anchor to one hour before the boundary
114
- {
115
- const a = new Date(end.getTime() - HOUR); // 1 hour before Standard Time start
116
- const b = new Date(a.getTime() + 24 * HOUR + dstOffset); // 1 day later, same local time
117
- const c = new Date(a.getTime() + 48 * HOUR + dstOffset); // 2 days later, same local time
118
-
119
- expect(sameTime(a, b)).toBe(true);
120
- expect(sameTime(a, c)).toBe(true);
121
- expect(sameTime(b, c)).toBe(true);
122
- expect(differenceInDays(c, b)).toBe(1); // normal 24-hour day
123
- expect(differenceInDays(b, a)).toBe(1); // 25 hours -> 1 day
124
- expect(differenceInDays(c, a)).toBe(2); // 49 hours -> 2 days
125
- }
126
- // anchor to one hour after the boundary
127
- {
128
- const a = new Date(end.getTime() + HOUR); // 1 hour after Standard Time start
129
- const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
130
- const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
131
-
132
- expect(sameTime(a, b)).toBe(true);
133
- expect(sameTime(a, c)).toBe(true);
134
- expect(sameTime(b, c)).toBe(true);
135
- expect(differenceInDays(c, b)).toBe(1); // normal 24-hour day
136
- expect(differenceInDays(b, a)).toBe(1); // normal 24-hour day
137
- expect(differenceInDays(c, a)).toBe(2); // 2 normal 24-hour days
138
- }
139
- // anchor exactly at the boundary
140
- {
141
- const a = end; // exactly when Standard Time starts
142
- const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
143
- const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
144
- expect(differenceInDays(b, a)).toBe(1); // normal 24-hour day
145
- expect(differenceInDays(c, a)).toBe(2); // 2 normal 24-hour days
146
- }
147
- });
148
-
149
- it('does not return -0 when the given dates are the same', () => {
150
- function isNegativeZero(x: number): boolean {
151
- return x === 0 && 1 / x < 0;
152
- }
153
-
154
- const result = differenceInDays(new Date(2014, 8 /* Sep */, 5, 0, 0), new Date(2014, 8 /* Sep */, 5, 0, 0));
155
-
156
- const resultIsNegative = isNegativeZero(result);
157
- expect(resultIsNegative).toBe(false);
158
- });
159
- });
160
-
161
- it('returns NaN if the first date is `Invalid Date`', () => {
162
- const result = differenceInDays(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
163
- expect(isNaN(result)).toBe(true);
164
- });
165
-
166
- it('returns NaN if the second date is `Invalid Date`', () => {
167
- const result = differenceInDays(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
168
- expect(isNaN(result)).toBe(true);
169
- });
170
-
171
- it('returns NaN if the both dates are `Invalid Date`', () => {
172
- const result = differenceInDays(new Date(NaN), new Date(NaN));
173
- expect(isNaN(result)).toBe(true);
174
- });
175
- });
@@ -1,122 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInHours } from './index';
3
-
4
- describe('differenceInHours', () => {
5
- it('returns the number of hours between the given dates with `trunc` as a default rounding method', () => {
6
- const result = differenceInHours(
7
- new Date(2014, 6 /* Jul */, 2, 6, 0, 29),
8
- new Date(2014, 6 /* Jul */, 2, 20, 0, 28.973),
9
- );
10
- expect(result).toBe(-13);
11
- });
12
-
13
- it('returns the number of hours between the given dates', () => {
14
- const result = differenceInHours(new Date(2014, 6 /* Jul */, 2, 20, 0), new Date(2014, 6 /* Jul */, 2, 6, 0));
15
- expect(result).toBe(14);
16
- });
17
-
18
- it('returns a negative number if the time value of the first date is smaller', () => {
19
- const result = differenceInHours(new Date(2014, 6 /* Jul */, 2, 6, 0), new Date(2014, 6 /* Jul */, 2, 20, 0));
20
- expect(result).toBe(-14);
21
- });
22
-
23
- it('returns a 0, not a negative 0 - issue #2555 ', () => {
24
- const result = differenceInHours(
25
- new Date(2021, 6 /* Jul */, 22, 6, 1, 28.973),
26
- new Date(2021, 6 /* Jul */, 22, 6, 1, 28.976),
27
- );
28
- expect(result).toBe(0);
29
- });
30
-
31
- it('returns 2 with a rounding method of `ceil`, not a negative 0 - issue #2555 ', () => {
32
- const result = differenceInHours(
33
- new Date(2021, 6 /* Jul */, 22, 7, 1, 29, 976),
34
- new Date(2021, 6 /* Jul */, 22, 6, 1, 28, 173),
35
- { roundingMethod: 'ceil' },
36
- );
37
- expect(result).toBe(2);
38
- });
39
-
40
- it('returns 1 with a rounding method of `floor`, not a negative 0 - issue #2555 ', () => {
41
- const result = differenceInHours(
42
- new Date(2021, 6 /* Jul */, 22, 7, 1, 29, 976),
43
- new Date(2021, 6 /* Jul */, 22, 6, 1, 28, 173),
44
- { roundingMethod: 'floor' },
45
- );
46
- expect(result).toBe(1);
47
- });
48
-
49
- it('returns 1 with a rounding method of `round`, not a negative 0 - issue #2555 ', () => {
50
- const result = differenceInHours(
51
- new Date(2021, 6 /* Jul */, 22, 7, 1, 29, 976),
52
- new Date(2021, 6 /* Jul */, 22, 6, 1, 28, 173),
53
- { roundingMethod: 'round' },
54
- );
55
- expect(result).toBe(1);
56
- });
57
-
58
- it('returns 1 with a rounding method of `trunc`, not a negative 0 - issue #2555 ', () => {
59
- const result = differenceInHours(
60
- new Date(2021, 6 /* Jul */, 22, 7, 1, 29, 976),
61
- new Date(2021, 6 /* Jul */, 22, 6, 1, 28, 173),
62
- { roundingMethod: 'trunc' },
63
- );
64
- expect(result).toBe(1);
65
- });
66
-
67
- it('accepts timestamps', () => {
68
- const result = differenceInHours(
69
- new Date(2014, 8 /* Sep */, 5, 18, 0).getTime(),
70
- new Date(2014, 8 /* Sep */, 5, 6, 0).getTime(),
71
- );
72
- expect(result).toBe(12);
73
- });
74
-
75
- describe('edge cases', () => {
76
- it('the difference is less than an hour, but the given dates are in different calendar hours', () => {
77
- const result = differenceInHours(new Date(2014, 8 /* Sep */, 5, 12), new Date(2014, 8 /* Sep */, 5, 11, 59));
78
- expect(result).toBe(0);
79
- });
80
-
81
- it('the same for the swapped dates', () => {
82
- const result = differenceInHours(new Date(2014, 8 /* Sep */, 5, 11, 59), new Date(2014, 8 /* Sep */, 5, 12));
83
- expect(result).toBe(0);
84
- });
85
-
86
- it('the difference is an integral number of hours', () => {
87
- const result = differenceInHours(new Date(2014, 8 /* Sep */, 5, 13, 0), new Date(2014, 8 /* Sep */, 5, 12, 0));
88
- expect(result).toBe(1);
89
- });
90
-
91
- it('the given dates are the same', () => {
92
- const result = differenceInHours(new Date(2014, 8 /* Sep */, 5, 0, 0), new Date(2014, 8 /* Sep */, 5, 0, 0));
93
- expect(result).toBe(0);
94
- });
95
-
96
- it('does not return -0 when the given dates are the same', () => {
97
- function isNegativeZero(x: number): boolean {
98
- return x === 0 && 1 / x < 0;
99
- }
100
-
101
- const result = differenceInHours(new Date(2014, 8 /* Sep */, 5, 0, 0), new Date(2014, 8 /* Sep */, 5, 0, 0));
102
-
103
- const resultIsNegative = isNegativeZero(result);
104
- expect(resultIsNegative).toBe(false);
105
- });
106
- });
107
-
108
- it('returns NaN if the first date is `Invalid Date`', () => {
109
- const result = differenceInHours(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
110
- expect(isNaN(result)).toBe(true);
111
- });
112
-
113
- it('returns NaN if the second date is `Invalid Date`', () => {
114
- const result = differenceInHours(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
115
- expect(isNaN(result)).toBe(true);
116
- });
117
-
118
- it('returns NaN if the both dates are `Invalid Date`', () => {
119
- const result = differenceInHours(new Date(NaN), new Date(NaN));
120
- expect(isNaN(result)).toBe(true);
121
- });
122
- });