@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,47 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { constructFrom } from '.';
3
-
4
- describe('constructFrom', () => {
5
- it('should create a new Date instance using the constructor from the reference date', () => {
6
- const referenceDate = new Date('2023-10-25T12:00:00');
7
- const value = new Date('2023-10-26T12:00:00');
8
-
9
- const result = constructFrom(referenceDate, value);
10
-
11
- expect(result instanceof Date).toBe(true);
12
- expect(result).toEqual(value);
13
- expect(result.constructor).toBe(referenceDate.constructor);
14
- });
15
-
16
- it('should create a new Date instance using a number as the reference date', () => {
17
- const referenceDate = 1635158400000; // October 25, 2023
18
- const value = new Date('2023-10-26T12:00:00');
19
-
20
- const result = constructFrom(referenceDate, value);
21
-
22
- expect(result instanceof Date).toBe(true);
23
- expect(result).toEqual(value);
24
- });
25
-
26
- it('should create a new custom Date instance using the constructor from the reference date', () => {
27
- class CustomDate extends Date {}
28
- const referenceDate = new CustomDate('2023-10-25T12:00:00');
29
- const value = new CustomDate('2023-10-26T12:00:00');
30
-
31
- const result = constructFrom(referenceDate, value);
32
-
33
- expect(result instanceof CustomDate).toBe(true);
34
- expect(result).toEqual(value);
35
- expect(result.constructor).toBe(referenceDate.constructor);
36
- });
37
-
38
- it('should create a new Date instance using numbers as both referenceDate and value', () => {
39
- const referenceDate = 1635158400000; // October 25, 2023
40
- const value = 1635244800000; // October 26, 2023
41
-
42
- const result = constructFrom(referenceDate, value);
43
-
44
- expect(result instanceof Date).toBe(true);
45
- expect(result.getTime()).toEqual(value);
46
- });
47
- });
@@ -1,37 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { constructNow } from '.';
3
-
4
- describe('constructNow', () => {
5
- it('creates a new Date instance using the constructor from the reference date', () => {
6
- const result = constructNow(new Date('2023-10-25T12:00:00'));
7
-
8
- expect(result instanceof Date).toBe(true);
9
- expect(+result - Date.now()).toBeLessThan(10); // Give 10 ms of slack
10
- expect(result.constructor).toBe(Date);
11
- });
12
-
13
- it('creates a new Date instance using a number as the reference date', () => {
14
- const result = constructNow(1635158400000);
15
-
16
- expect(result instanceof Date).toBe(true);
17
- expect(+result - Date.now()).toBeLessThan(10); // Give 10 ms of slack
18
- expect(result.constructor).toBe(Date);
19
- });
20
-
21
- it('creates a new Date instance using a string as the reference date', () => {
22
- const result = constructNow('2023-10-25T12:00:00');
23
-
24
- expect(result instanceof Date).toBe(true);
25
- expect(+result - Date.now()).toBeLessThan(10); // Give 10 ms of slack
26
- expect(result.constructor).toBe(Date);
27
- });
28
-
29
- it('creates a new custom Date instance using the constructor from the reference date', () => {
30
- class CustomDate extends Date {}
31
- const result = constructNow(new CustomDate('2023-10-26T12:00:00'));
32
-
33
- expect(result instanceof CustomDate).toBe(true);
34
- expect(+result - Date.now()).toBeLessThan(10); // Give 10 ms of slack
35
- expect(result.constructor).toBe(CustomDate);
36
- });
37
- });
@@ -1,36 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { daysToWeeks } from './index';
3
-
4
- describe('daysToWeeks', () => {
5
- it('converts days to weeks', () => {
6
- expect(daysToWeeks(7)).toBe(1);
7
- expect(daysToWeeks(14)).toBe(2);
8
- });
9
-
10
- it('uses trunc rounding', () => {
11
- expect(daysToWeeks(8)).toBe(1);
12
- expect(daysToWeeks(6)).toBe(0);
13
- });
14
-
15
- it('handles border values', () => {
16
- expect(daysToWeeks(7.5)).toBe(1);
17
- expect(daysToWeeks(0)).toBe(0);
18
- });
19
-
20
- it('properly works with negative numbers', () => {
21
- expect(daysToWeeks(7)).toBe(1);
22
- expect(daysToWeeks(-7)).toBe(-1);
23
-
24
- expect(daysToWeeks(14)).toBe(2);
25
- expect(daysToWeeks(-14)).toBe(-2);
26
-
27
- expect(daysToWeeks(8)).toBe(1);
28
- expect(daysToWeeks(-8)).toBe(-1);
29
-
30
- expect(daysToWeeks(6)).toBe(0);
31
- expect(daysToWeeks(-6)).toBe(0);
32
-
33
- expect(daysToWeeks(7.5)).toBe(1);
34
- expect(daysToWeeks(-7.5)).toBe(-1);
35
- });
36
- });
@@ -1,102 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInBusinessDays } from './index';
3
-
4
- describe('differenceInBusinessDays', () => {
5
- it('returns the number of business days between the given dates, excluding weekends', () => {
6
- const result = differenceInBusinessDays(new Date(2014, 6 /* Jul */, 18), new Date(2014, 0 /* Jan */, 10));
7
- expect(result).toBe(135);
8
- });
9
-
10
- it('can handle long ranges', () => {
11
- const result = differenceInBusinessDays(new Date(15000, 0 /* Jan */, 1), new Date(2014, 0 /* Jan */, 1));
12
- expect(result).toBe(3387885);
13
- });
14
-
15
- it('the same except given first date falls on a weekend', () => {
16
- const result = differenceInBusinessDays(new Date(2019, 6 /* Jul */, 20), new Date(2019, 6 /* Jul */, 18));
17
- expect(result).toBe(2);
18
- });
19
-
20
- it('the same except given second date falls on a weekend', () => {
21
- const result = differenceInBusinessDays(new Date(2019, 6 /* Jul */, 23), new Date(2019, 6 /* Jul */, 20));
22
- expect(result).toBe(1);
23
- });
24
-
25
- it('the same except both given dates fall on a weekend', () => {
26
- const result = differenceInBusinessDays(new Date(2019, 6 /* Jul */, 28), new Date(2019, 6 /* Jul */, 20));
27
- expect(result).toBe(5);
28
- });
29
-
30
- it('returns a negative number if the time value of the first date is smaller', () => {
31
- const result = differenceInBusinessDays(new Date(2014, 0 /* Jan */, 10), new Date(2014, 6 /* Jul */, 20));
32
- expect(result).toBe(-135);
33
- });
34
-
35
- it('accepts timestamps', () => {
36
- const result = differenceInBusinessDays(new Date(2014, 6, 18).getTime(), new Date(2014, 0, 10).getTime());
37
- expect(result).toBe(135);
38
- });
39
-
40
- describe('edge cases', () => {
41
- it('the difference is less than a day, but the given dates are in different calendar days', () => {
42
- const result = differenceInBusinessDays(
43
- new Date(2014, 8 /* Sep */, 5, 0, 0),
44
- new Date(2014, 8 /* Sep */, 4, 23, 59),
45
- );
46
- expect(result).toBe(1);
47
- });
48
-
49
- it('the same for the swapped dates', () => {
50
- const result = differenceInBusinessDays(
51
- new Date(2014, 8 /* Sep */, 4, 23, 59),
52
- new Date(2014, 8 /* Sep */, 5, 0, 0),
53
- );
54
- expect(result).toBe(-1);
55
- });
56
-
57
- it('the time values of the given dates are the same', () => {
58
- const result = differenceInBusinessDays(
59
- new Date(2014, 8 /* Sep */, 5, 0, 0),
60
- new Date(2014, 8 /* Sep */, 4, 0, 0),
61
- );
62
- expect(result).toBe(1);
63
- });
64
-
65
- it('the given dates are the same', () => {
66
- const result = differenceInBusinessDays(
67
- new Date(2014, 8 /* Sep */, 5, 0, 0),
68
- new Date(2014, 8 /* Sep */, 5, 0, 0),
69
- );
70
- expect(result).toBe(0);
71
- });
72
-
73
- it('does not return -0 when the given dates are the same', () => {
74
- function isNegativeZero(x: number) {
75
- return x === 0 && 1 / x < 0;
76
- }
77
-
78
- const result = differenceInBusinessDays(
79
- new Date(2014, 8 /* Sep */, 5, 0, 0),
80
- new Date(2014, 8 /* Sep */, 5, 0, 0),
81
- );
82
-
83
- const resultIsNegative = isNegativeZero(result);
84
- expect(resultIsNegative).toBe(false);
85
- });
86
-
87
- it('returns NaN if the first date is `Invalid Date`', () => {
88
- const result = differenceInBusinessDays(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
89
- expect(isNaN(result)).toBe(true);
90
- });
91
-
92
- it('returns NaN if the second date is `Invalid Date`', () => {
93
- const result = differenceInBusinessDays(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
94
- expect(isNaN(result)).toBe(true);
95
- });
96
-
97
- it('returns NaN if the both dates are `Invalid Date`', () => {
98
- const result = differenceInBusinessDays(new Date(NaN), new Date(NaN));
99
- expect(isNaN(result)).toBe(true);
100
- });
101
- });
102
- });
@@ -1,206 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInCalendarDays } from './index';
3
- import { getDstTransitions } from '../_test/dst/tzOffsetTransitions';
4
-
5
- describe('differenceInCalendarDays', () => {
6
- it('returns the number of calendar days between the given dates', () => {
7
- const result = differenceInCalendarDays(
8
- new Date(2012, 6 /* Jul */, 2, 18, 0),
9
- new Date(2011, 6 /* Jul */, 2, 6, 0),
10
- );
11
- expect(result).toBe(366);
12
- });
13
-
14
- it('returns a negative number if the time value of the first date is smaller', () => {
15
- const result = differenceInCalendarDays(
16
- new Date(2011, 6 /* Jul */, 2, 6, 0),
17
- new Date(2012, 6 /* Jul */, 2, 18, 0),
18
- );
19
- expect(result).toBe(-366);
20
- });
21
-
22
- it('accepts timestamps', () => {
23
- const result = differenceInCalendarDays(
24
- new Date(2014, 8 /* Sep */, 5, 18, 0).getTime(),
25
- new Date(2014, 8 /* Sep */, 4, 6, 0).getTime(),
26
- );
27
- expect(result).toBe(1);
28
- });
29
-
30
- describe('edge cases', () => {
31
- it('the difference is less than a day, but the given dates are in different calendar days', () => {
32
- const result = differenceInCalendarDays(
33
- new Date(2014, 8 /* Sep */, 5, 0, 0),
34
- new Date(2014, 8 /* Sep */, 4, 23, 59),
35
- );
36
- expect(result).toBe(1);
37
- });
38
-
39
- it('the same for the swapped dates', () => {
40
- const result = differenceInCalendarDays(
41
- new Date(2014, 8 /* Sep */, 4, 23, 59),
42
- new Date(2014, 8 /* Sep */, 5, 0, 0),
43
- );
44
- expect(result).toBe(-1);
45
- });
46
-
47
- it('the time values of the given the given dates are the same', () => {
48
- const result = differenceInCalendarDays(
49
- new Date(2014, 8 /* Sep */, 6, 0, 0),
50
- new Date(2014, 8 /* Sep */, 5, 0, 0),
51
- );
52
- expect(result).toBe(1);
53
- });
54
-
55
- it('the given the given dates are the same', () => {
56
- const result = differenceInCalendarDays(
57
- new Date(2014, 8 /* Sep */, 5, 0, 0),
58
- new Date(2014, 8 /* Sep */, 5, 0, 0),
59
- );
60
- expect(result).toBe(0);
61
- });
62
-
63
- it('does not return -0 when the given dates are the same', () => {
64
- function isNegativeZero(x: number): boolean {
65
- return x === 0 && 1 / x < 0;
66
- }
67
-
68
- const result = differenceInCalendarDays(
69
- new Date(2014, 8 /* Sep */, 5, 0, 0),
70
- new Date(2014, 8 /* Sep */, 5, 0, 0),
71
- );
72
-
73
- const resultIsNegative = isNegativeZero(result);
74
- expect(resultIsNegative).toBe(false);
75
- });
76
-
77
- it('properly works with negative numbers', () => {
78
- const a = new Date(2014, 6 /* Jul */, 1);
79
- const b = new Date(2014, 6 /* Jul */, 2, 1);
80
-
81
- expect(differenceInCalendarDays(b, a)).toBe(1);
82
- expect(differenceInCalendarDays(a, b)).toBe(-1);
83
- });
84
- });
85
-
86
- it('returns NaN if the first date is `Invalid Date`', () => {
87
- const result = differenceInCalendarDays(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
88
- expect(isNaN(result)).toBe(true);
89
- });
90
-
91
- it('returns NaN if the second date is `Invalid Date`', () => {
92
- const result = differenceInCalendarDays(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
93
- expect(isNaN(result)).toBe(true);
94
- });
95
-
96
- it('returns NaN if the both dates are `Invalid Date`', () => {
97
- const result = differenceInCalendarDays(new Date(NaN), new Date(NaN));
98
- expect(isNaN(result)).toBe(true);
99
- });
100
-
101
- // These tests were copy-pasted almost unchanged from DST tests for
102
- // `differenceInDays`
103
- const dstTransitions = getDstTransitions(2017);
104
- const dstOnly = dstTransitions.start && dstTransitions.end ? it : it.skip;
105
- const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || process.env.tz;
106
- dstOnly(`works across DST start & end in local timezone: ${tz || '(unknown)'}`, () => {
107
- const { start, end } = dstTransitions;
108
- const HOUR = 1000 * 60 * 60;
109
- const MINUTE = 1000 * 60;
110
- function sameTime(t1: Date, t2: Date): boolean {
111
- return (
112
- t1.getHours() === t2.getHours() &&
113
- t1.getMinutes() === t2.getMinutes() &&
114
- t1.getSeconds() === t2.getSeconds() &&
115
- t1.getMilliseconds() === t2.getMilliseconds()
116
- );
117
- }
118
-
119
- expect(start).not.toBe(undefined);
120
- expect(end).not.toBe(undefined);
121
-
122
- if (start === undefined || end === undefined) {
123
- return;
124
- }
125
-
126
- // It's usually 1 hour, but for some timezones, e.g. Australia/Lord_Howe, it is 30 minutes
127
- const dstOffset = (end.getTimezoneOffset() - start.getTimezoneOffset()) * MINUTE;
128
-
129
- // TEST DST START (SPRING)
130
-
131
- // anchor to one hour before the boundary
132
- {
133
- const a = new Date(start.getTime() - HOUR); // 1 hour before DST
134
- const b = new Date(a.getTime() + 24 * HOUR - dstOffset); // 1 day later, same local time
135
- const c = new Date(a.getTime() + 48 * HOUR - dstOffset); // 2 days later, same local time
136
-
137
- expect(sameTime(a, b)).toBe(true);
138
- expect(sameTime(a, c)).toBe(true);
139
- expect(sameTime(b, c)).toBe(true);
140
- expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
141
- expect(differenceInCalendarDays(b, a)).toBe(1); // 23 hours -> 1 day
142
- expect(differenceInCalendarDays(c, a)).toBe(2); // 47 hours -> 2 days
143
- }
144
- // anchor exactly at the boundary
145
- {
146
- const a = start; // exactly when DST starts
147
- const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
148
- const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
149
-
150
- expect(sameTime(a, b)).toBe(true);
151
- expect(sameTime(a, c)).toBe(true);
152
- expect(sameTime(b, c)).toBe(true);
153
- expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
154
- expect(differenceInCalendarDays(b, a)).toBe(1); // normal 24-hour day
155
- expect(differenceInCalendarDays(c, a)).toBe(2); // 2 normal 24-hour days
156
- }
157
-
158
- // TEST DST END (FALL)
159
-
160
- // make sure that diffs across a "fall back" DST boundary won't report a full day
161
- // until 25 hours have elapsed.
162
- {
163
- const a = new Date(end.getTime() - HOUR / 2); // 1 hour before Standard Time starts
164
- const b = new Date(a.getTime() + 24 * HOUR + dstOffset - 15 * MINUTE); // 1 day later, 15 mins earlier local time
165
- const c = new Date(a.getTime() + 48 * HOUR + dstOffset - 15 * MINUTE); // 2 days later, 15 mins earlier local time
166
-
167
- expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
168
- expect(differenceInCalendarDays(b, a)).toBe(1); // 24.75 hours but 1 calendar days
169
- expect(differenceInCalendarDays(c, a)).toBe(2); // 49.75 hours but 2 calendar days
170
- }
171
- // anchor to one hour before the boundary
172
- {
173
- const a = new Date(end.getTime() - HOUR); // 1 hour before Standard Time starts
174
- const b = new Date(a.getTime() + 24 * HOUR + dstOffset); // 1 day later, same local time
175
- const c = new Date(a.getTime() + 48 * HOUR + dstOffset); // 2 days later, same local time
176
-
177
- expect(sameTime(a, b)).toBe(true);
178
- expect(sameTime(a, c)).toBe(true);
179
- expect(sameTime(b, c)).toBe(true);
180
- expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
181
- expect(differenceInCalendarDays(b, a)).toBe(1); // 25 hours -> 1 day
182
- expect(differenceInCalendarDays(c, a)).toBe(2); // 49 hours -> 2 days
183
- }
184
- // anchor to one hour after the boundary
185
- {
186
- const a = new Date(end.getTime() + HOUR); // 1 hour after Standard Time starts
187
- const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
188
- const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
189
-
190
- expect(sameTime(a, b)).toBe(true);
191
- expect(sameTime(a, c)).toBe(true);
192
- expect(sameTime(b, c)).toBe(true);
193
- expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
194
- expect(differenceInCalendarDays(b, a)).toBe(1); // normal 24-hour day
195
- expect(differenceInCalendarDays(c, a)).toBe(2); // 2 normal 24-hour days
196
- }
197
- // anchor exactly at the boundary
198
- {
199
- const a = end; // exactly when Standard Time starts
200
- const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
201
- const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
202
- expect(differenceInCalendarDays(b, a)).toBe(1); // normal 24-hour day
203
- expect(differenceInCalendarDays(c, a)).toBe(2); // 2 normal 24-hour days
204
- }
205
- });
206
- });
@@ -1,93 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInCalendarISOWeekYears } from './index';
3
-
4
- describe('differenceInCalendarISOWeekYears', () => {
5
- it('returns the number of calendar ISO week-numbering years between the given dates', () => {
6
- const result = differenceInCalendarISOWeekYears(
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 = differenceInCalendarISOWeekYears(
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 = differenceInCalendarISOWeekYears(
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
- it('handles dates before 100 AD', () => {
30
- const firstDate = new Date(0);
31
- firstDate.setFullYear(14, 0 /* Jan */, 1);
32
- firstDate.setHours(0, 0, 0, 0);
33
- const secondDate = new Date(0);
34
- secondDate.setFullYear(0, 0 /* Jan */, 1);
35
- secondDate.setHours(0, 0, 0, 0);
36
- const result = differenceInCalendarISOWeekYears(firstDate, secondDate);
37
- expect(result).toBe(15);
38
- });
39
-
40
- describe('edge cases', () => {
41
- it('the difference is less than an ISO year, but the given dates are in different calendar ISO years', () => {
42
- const result = differenceInCalendarISOWeekYears(new Date(2012, 0 /* Jan */, 2), new Date(2012, 0 /* Jan */, 1));
43
- expect(result).toBe(1);
44
- });
45
-
46
- it('the same for the swapped dates', () => {
47
- const result = differenceInCalendarISOWeekYears(new Date(2012, 0 /* Jan */, 1), new Date(2012, 0 /* Jan */, 2));
48
- expect(result).toBe(-1);
49
- });
50
-
51
- it('the ISO weeks and weekdays of the given dates are the same', () => {
52
- const result = differenceInCalendarISOWeekYears(new Date(2013, 11 /* Dec */, 30), new Date(2012, 0 /* Jan */, 2));
53
- expect(result).toBe(2);
54
- });
55
-
56
- it('the given dates are the same', () => {
57
- const result = differenceInCalendarISOWeekYears(
58
- new Date(2014, 8 /* Sep */, 5, 0, 0),
59
- new Date(2014, 8 /* Sep */, 5, 0, 0),
60
- );
61
- expect(result).toBe(0);
62
- });
63
-
64
- it('does not return -0 when the given dates are the same', () => {
65
- function isNegativeZero(x: number): boolean {
66
- return x === 0 && 1 / x < 0;
67
- }
68
-
69
- const result = differenceInCalendarISOWeekYears(
70
- new Date(2014, 8 /* Sep */, 5, 0, 0),
71
- new Date(2014, 8 /* Sep */, 5, 0, 0),
72
- );
73
-
74
- const resultIsNegative = isNegativeZero(result);
75
- expect(resultIsNegative).toBe(false);
76
- });
77
- });
78
-
79
- it('returns NaN if the first date is `Invalid Date`', () => {
80
- const result = differenceInCalendarISOWeekYears(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
81
- expect(isNaN(result)).toBe(true);
82
- });
83
-
84
- it('returns NaN if the second date is `Invalid Date`', () => {
85
- const result = differenceInCalendarISOWeekYears(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
86
- expect(isNaN(result)).toBe(true);
87
- });
88
-
89
- it('returns NaN if the both dates are `Invalid Date`', () => {
90
- const result = differenceInCalendarISOWeekYears(new Date(NaN), new Date(NaN));
91
- expect(isNaN(result)).toBe(true);
92
- });
93
- });
@@ -1,89 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { differenceInCalendarISOWeeks } from './index';
3
-
4
- describe('differenceInCalendarISOWeeks', () => {
5
- it('returns the number of calendar ISO weeks between the given dates', () => {
6
- const result = differenceInCalendarISOWeeks(
7
- new Date(2014, 6 /* Jul */, 8, 18, 0),
8
- new Date(2014, 5 /* Jun */, 29, 6, 0),
9
- );
10
- expect(result).toBe(2);
11
- });
12
-
13
- it('returns a negative number if the time value of the first date is smaller', () => {
14
- const result = differenceInCalendarISOWeeks(
15
- new Date(2014, 5 /* Jun */, 29, 6, 0),
16
- new Date(2014, 6 /* Jul */, 8, 18, 0),
17
- );
18
- expect(result).toBe(-2);
19
- });
20
-
21
- it('accepts timestamps', () => {
22
- const result = differenceInCalendarISOWeeks(
23
- new Date(2014, 6 /* Jul */, 12).getTime(),
24
- new Date(2014, 6 /* Jul */, 2).getTime(),
25
- );
26
- expect(result).toBe(1);
27
- });
28
-
29
- describe('edge cases', () => {
30
- it('the difference is less than an ISO week, but the given dates are in different calendar ISO weeks', () => {
31
- const result = differenceInCalendarISOWeeks(new Date(2014, 6 /* Jul */, 7), new Date(2014, 6 /* Jul */, 6));
32
- expect(result).toBe(1);
33
- });
34
-
35
- it('the same for the swapped dates', () => {
36
- const result = differenceInCalendarISOWeeks(new Date(2014, 6 /* Jul */, 6), new Date(2014, 6 /* Jul */, 7));
37
- expect(result).toBe(-1);
38
- });
39
-
40
- it('the days of weeks of the given dates are the same', () => {
41
- const result = differenceInCalendarISOWeeks(new Date(2014, 6 /* Jul */, 9), new Date(2014, 6 /* Jul */, 2));
42
- expect(result).toBe(1);
43
- });
44
-
45
- it('the given dates are the same', () => {
46
- const result = differenceInCalendarISOWeeks(
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 = differenceInCalendarISOWeeks(
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
- it('properly works with negative numbers', () => {
68
- const a = new Date(2014, 6 /* Jul */, 9);
69
- const b = new Date(2014, 6 /* Jul */, 19);
70
- expect(differenceInCalendarISOWeeks(b, a)).toBe(1);
71
- expect(differenceInCalendarISOWeeks(a, b)).toBe(-1);
72
- });
73
- });
74
-
75
- it('returns NaN if the first date is `Invalid Date`', () => {
76
- const result = differenceInCalendarISOWeeks(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
77
- expect(isNaN(result)).toBe(true);
78
- });
79
-
80
- it('returns NaN if the second date is `Invalid Date`', () => {
81
- const result = differenceInCalendarISOWeeks(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
82
- expect(isNaN(result)).toBe(true);
83
- });
84
-
85
- it('returns NaN if the both dates are `Invalid Date`', () => {
86
- const result = differenceInCalendarISOWeeks(new Date(NaN), new Date(NaN));
87
- expect(isNaN(result)).toBe(true);
88
- });
89
- });