constants.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. /**
  2. * @module constants
  3. * @summary Useful constants
  4. * @description
  5. * Collection of useful date constants.
  6. *
  7. * The constants could be imported from `date-fns/constants`:
  8. *
  9. * ```ts
  10. * import { maxTime, minTime } from "./constants/date-fns/constants";
  11. *
  12. * function isAllowedTime(time) {
  13. * return time <= maxTime && time >= minTime;
  14. * }
  15. * ```
  16. */
  17. /**
  18. * @constant
  19. * @name daysInWeek
  20. * @summary Days in 1 week.
  21. */
  22. export const daysInWeek = 7;
  23. /**
  24. * @constant
  25. * @name daysInYear
  26. * @summary Days in 1 year.
  27. *
  28. * @description
  29. * How many days in a year.
  30. *
  31. * One years equals 365.2425 days according to the formula:
  32. *
  33. * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.
  34. * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days
  35. */
  36. export const daysInYear = 365.2425;
  37. /**
  38. * @constant
  39. * @name maxTime
  40. * @summary Maximum allowed time.
  41. *
  42. * @example
  43. * import { maxTime } from "./constants/date-fns/constants";
  44. *
  45. * const isValid = 8640000000000001 <= maxTime;
  46. * //=> false
  47. *
  48. * new Date(8640000000000001);
  49. * //=> Invalid Date
  50. */
  51. export const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;
  52. /**
  53. * @constant
  54. * @name minTime
  55. * @summary Minimum allowed time.
  56. *
  57. * @example
  58. * import { minTime } from "./constants/date-fns/constants";
  59. *
  60. * const isValid = -8640000000000001 >= minTime;
  61. * //=> false
  62. *
  63. * new Date(-8640000000000001)
  64. * //=> Invalid Date
  65. */
  66. export const minTime = -maxTime;
  67. /**
  68. * @constant
  69. * @name millisecondsInWeek
  70. * @summary Milliseconds in 1 week.
  71. */
  72. export const millisecondsInWeek = 604800000;
  73. /**
  74. * @constant
  75. * @name millisecondsInDay
  76. * @summary Milliseconds in 1 day.
  77. */
  78. export const millisecondsInDay = 86400000;
  79. /**
  80. * @constant
  81. * @name millisecondsInMinute
  82. * @summary Milliseconds in 1 minute
  83. */
  84. export const millisecondsInMinute = 60000;
  85. /**
  86. * @constant
  87. * @name millisecondsInHour
  88. * @summary Milliseconds in 1 hour
  89. */
  90. export const millisecondsInHour = 3600000;
  91. /**
  92. * @constant
  93. * @name millisecondsInSecond
  94. * @summary Milliseconds in 1 second
  95. */
  96. export const millisecondsInSecond = 1000;
  97. /**
  98. * @constant
  99. * @name minutesInYear
  100. * @summary Minutes in 1 year.
  101. */
  102. export const minutesInYear = 525600;
  103. /**
  104. * @constant
  105. * @name minutesInMonth
  106. * @summary Minutes in 1 month.
  107. */
  108. export const minutesInMonth = 43200;
  109. /**
  110. * @constant
  111. * @name minutesInDay
  112. * @summary Minutes in 1 day.
  113. */
  114. export const minutesInDay = 1440;
  115. /**
  116. * @constant
  117. * @name minutesInHour
  118. * @summary Minutes in 1 hour.
  119. */
  120. export const minutesInHour = 60;
  121. /**
  122. * @constant
  123. * @name monthsInQuarter
  124. * @summary Months in 1 quarter.
  125. */
  126. export const monthsInQuarter = 3;
  127. /**
  128. * @constant
  129. * @name monthsInYear
  130. * @summary Months in 1 year.
  131. */
  132. export const monthsInYear = 12;
  133. /**
  134. * @constant
  135. * @name quartersInYear
  136. * @summary Quarters in 1 year
  137. */
  138. export const quartersInYear = 4;
  139. /**
  140. * @constant
  141. * @name secondsInHour
  142. * @summary Seconds in 1 hour.
  143. */
  144. export const secondsInHour = 3600;
  145. /**
  146. * @constant
  147. * @name secondsInMinute
  148. * @summary Seconds in 1 minute.
  149. */
  150. export const secondsInMinute = 60;
  151. /**
  152. * @constant
  153. * @name secondsInDay
  154. * @summary Seconds in 1 day.
  155. */
  156. export const secondsInDay = secondsInHour * 24;
  157. /**
  158. * @constant
  159. * @name secondsInWeek
  160. * @summary Seconds in 1 week.
  161. */
  162. export const secondsInWeek = secondsInDay * 7;
  163. /**
  164. * @constant
  165. * @name secondsInYear
  166. * @summary Seconds in 1 year.
  167. */
  168. export const secondsInYear = secondsInDay * daysInYear;
  169. /**
  170. * @constant
  171. * @name secondsInMonth
  172. * @summary Seconds in 1 month
  173. */
  174. export const secondsInMonth = secondsInYear / 12;
  175. /**
  176. * @constant
  177. * @name secondsInQuarter
  178. * @summary Seconds in 1 quarter.
  179. */
  180. export const secondsInQuarter = secondsInMonth * 3;
  181. /**
  182. * @constant
  183. * @name constructFromSymbol
  184. * @summary Symbol enabling Date extensions to inherit properties from the reference date.
  185. *
  186. * The symbol is used to enable the `constructFrom` function to construct a date
  187. * using a reference date and a value. It allows to transfer extra properties
  188. * from the reference date to the new date. It's useful for extensions like
  189. * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as
  190. * a constructor argument.
  191. */
  192. export const constructFromSymbol = Symbol.for("constructDateFrom");