UNPKG

1.74 kBJavaScriptView Raw
1/**
2 * @copyright Copyright (c) 2019 Maxim Khorin <maksimovichu@gmail.com>
3 */
4'use strict';
5
6module.exports = class DateHelper {
7
8 static isExpired (date, period, now = new Date) {
9 return date.valueOf() + this.parseDuration(period) < now.valueOf();
10 }
11
12 static isValid (date) {
13 if (!date) {
14 return false;
15 }
16 date = date instanceof Date ? date : new Date(date);
17 return !isNaN(date.getTime());
18 }
19
20 static getValid (date) {
21 if (!date) {
22 return null;
23 }
24 date = date instanceof Date ? date : new Date(date);
25 return isNaN(date.getTime()) ? null : date;
26 }
27
28 static getAbsolute (date) {
29 if (!date) {
30 return null;
31 }
32 date = date instanceof Date ? date : new Date(date);
33 const time = date.getTime();
34 return isNaN(time) ? null : (new Date(time + date.getTimezoneOffset() * 60000));
35 }
36
37 static getDayInterval (date) {
38 date = this.getValid(date);
39 if (!date) {
40 return null;
41 }
42 date.setUTCHours(0);
43 date.setUTCMinutes(0);
44 date.setUTCSeconds(0);
45 date.setUTCMilliseconds(0);
46 const end = new Date(date);
47 end.setUTCDate(date.getUTCDate() + 1);
48 return [date, end];
49 }
50
51 static parse (value, language, format = 'L') {
52 value = moment.utc(value, format, language);
53 return value.isValid() ? value.toDate() : null;
54 }
55
56 static parseDuration (value) {
57 return typeof value === 'number'
58 ? value * 1000
59 : moment.duration(value).valueOf();
60 }
61};
62
63const moment = require('moment');
\No newline at end of file