summaryrefslogtreecommitdiff
path: root/date-fns/src/milliseconds/index.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-08-23 16:46:06 -0300
committerSebastian <sebasjm@gmail.com>2021-08-23 16:48:30 -0300
commit38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch)
tree453dbf70000cc5e338b06201af1eaca8343f8f73 /date-fns/src/milliseconds/index.ts
parentf26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff)
downloadnode-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.gz
node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.bz2
node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.zip
added web vendorsHEADmaster
Diffstat (limited to 'date-fns/src/milliseconds/index.ts')
-rw-r--r--date-fns/src/milliseconds/index.ts62
1 files changed, 62 insertions, 0 deletions
diff --git a/date-fns/src/milliseconds/index.ts b/date-fns/src/milliseconds/index.ts
new file mode 100644
index 0000000..6519229
--- /dev/null
+++ b/date-fns/src/milliseconds/index.ts
@@ -0,0 +1,62 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { Duration } from '../types'
+
+// Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.
+// 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days
+const daysInYear = 365.2425
+
+/**
+ * @name milliseconds
+ * @category Millisecond Helpers
+ * @summary
+ * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.
+ *
+ * @description
+ * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.
+ *
+ * One years equals 365.2425 days according to the formula:
+ *
+ * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.
+ * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days
+ *
+ * One month is a year divided by 12.
+ *
+ * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {number} the milliseconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // 1 year in milliseconds
+ * milliseconds({ years: 1 })
+ * //=> 31556952000
+ *
+ * // 3 months in milliseconds
+ * milliseconds({ months: 3 })
+ * //=> 7889238000
+ */
+export default function milliseconds({
+ years,
+ months,
+ weeks,
+ days,
+ hours,
+ minutes,
+ seconds,
+}: Duration): number {
+ requiredArgs(1, arguments)
+
+ let totalDays = 0
+
+ if (years) totalDays += years * daysInYear
+ if (months) totalDays += months * (daysInYear / 12)
+ if (weeks) totalDays += weeks * 7
+ if (days) totalDays += days
+
+ let totalSeconds = totalDays * 24 * 60 * 60
+
+ if (hours) totalSeconds += hours * 60 * 60
+ if (minutes) totalSeconds += minutes * 60
+ if (seconds) totalSeconds += seconds
+
+ return Math.round(totalSeconds * 1000)
+}