UNPKG

2.32 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.extractTime = extractTime;
7
8var _spread = require("./object/spread");
9
10// Copyright 2017-2022 @polkadot/util authors & contributors
11// SPDX-License-Identifier: Apache-2.0
12const HRS = 60 * 60;
13const DAY = HRS * 24;
14const ZERO = {
15 days: 0,
16 hours: 0,
17 milliseconds: 0,
18 minutes: 0,
19 seconds: 0
20};
21/**
22 * @name addTime
23 * @summary Add together two Time arrays
24 */
25
26function addTime(a, b) {
27 return {
28 days: a.days + b.days,
29 hours: a.hours + b.hours,
30 milliseconds: a.milliseconds + b.milliseconds,
31 minutes: a.minutes + b.minutes,
32 seconds: a.seconds + b.seconds
33 };
34}
35
36function extractDays(milliseconds, hrs) {
37 const days = Math.floor(hrs / 24);
38 return addTime((0, _spread.objectSpread)({}, ZERO, {
39 days
40 }), extractTime(milliseconds - days * DAY * 1000));
41}
42
43function extractHrs(milliseconds, mins) {
44 const hrs = mins / 60;
45
46 if (hrs < 24) {
47 const hours = Math.floor(hrs);
48 return addTime((0, _spread.objectSpread)({}, ZERO, {
49 hours
50 }), extractTime(milliseconds - hours * HRS * 1000));
51 }
52
53 return extractDays(milliseconds, hrs);
54}
55
56function extractMins(milliseconds, secs) {
57 const mins = secs / 60;
58
59 if (mins < 60) {
60 const minutes = Math.floor(mins);
61 return addTime((0, _spread.objectSpread)({}, ZERO, {
62 minutes
63 }), extractTime(milliseconds - minutes * 60 * 1000));
64 }
65
66 return extractHrs(milliseconds, mins);
67}
68
69function extractSecs(milliseconds) {
70 const secs = milliseconds / 1000;
71
72 if (secs < 60) {
73 const seconds = Math.floor(secs);
74 return addTime((0, _spread.objectSpread)({}, ZERO, {
75 seconds
76 }), extractTime(milliseconds - seconds * 1000));
77 }
78
79 return extractMins(milliseconds, secs);
80}
81/**
82 * @name extractTime
83 * @summary Convert a quantity of seconds to Time array representing accumulated {days, minutes, hours, seconds, milliseconds}
84 * @example
85 * <BR>
86 *
87 * ```javascript
88 * import { extractTime } from '@polkadot/util';
89 *
90 * const { days, minutes, hours, seconds, milliseconds } = extractTime(6000); // 0, 0, 10, 0, 0
91 * ```
92 */
93
94
95function extractTime(milliseconds) {
96 return !milliseconds ? ZERO : milliseconds < 1000 ? (0, _spread.objectSpread)({}, ZERO, {
97 milliseconds
98 }) : extractSecs(milliseconds);
99}
\No newline at end of file