-
Notifications
You must be signed in to change notification settings - Fork 8
/
converter.js
103 lines (81 loc) · 2.49 KB
/
converter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
const {addDays, toDate, format, getTime} = require('date-fns');
const WEEK_TICK = 6048000000000;
const DAY_TICK = 864000000000;
function getDateFromTick(tick) {
if (tick === '' || tick === undefined) {
return getMonday(new Date());
}
return new Date((tick - 621355968000000000) / 10000);
}
function getTickFromDate(date) {
return (date.getTime() * 10000) + 621355968000000000;
}
function formatDate(today, iso = false) {
let dd = today.getDate();
let mm = today.getMonth() + 1; //January is 0!
let yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
if (iso) return `${yyyy}-${mm}-${dd}`;
return `${dd}.${mm}.${yyyy}`;
}
function timestampToIsoTzFormat(timestamp) {
return format(new Date(timestamp * 1000), 'yyyy-MM-dd\'T\'HH:mm:ss.SSXXX');
}
function dateToTimestamp(date) {
return getTime(date) / 1000;
}
function getMonday(date) {
let day = date.getDate() - date.getDay() + 1;
return new Date(date.getFullYear(), date.getMonth(), day);
}
function getDayName(dateStr) {
return new Date(dateStr).toLocaleDateString("pl", {weekday: "long"});
}
function getWeekDaysFrom(startDate, number = 5) {
if (!(startDate instanceof Date)) startDate = getDateFromTick(startDate);
const days = [];
for (let i = 0; i < number; i++) {
let date = addDays(startDate, i);
days.push([
getDayName(date),
formatDate(toDate(date)),
date
]);
}
return days;
}
function getPrevWeekTick(tick) {
return getPrevTick(tick, WEEK_TICK);
}
function getPrevDayTick(tick) {
return getPrevTick(tick, DAY_TICK);
}
function getNextWeekTick(tick) {
return getNextTick(tick, WEEK_TICK);
}
function getNextDayTick(tick) {
return getNextTick(tick, DAY_TICK);
}
function getNextTick(tick, plus) {
tick = tick ? tick : getTickFromDate(new Date());
return parseInt(tick) + plus;
}
function getPrevTick(tick, minus) {
tick = tick ? tick : getTickFromDate(new Date());
return parseInt(tick) - minus;
}
exports.getDateString = getDateFromTick;
exports.getWeekDaysFrom = getWeekDaysFrom;
exports.getDayName = getDayName;
exports.getPrevDayTick = getPrevDayTick;
exports.getNextDayTick = getNextDayTick;
exports.getPrevWeekTick = getPrevWeekTick;
exports.getNextWeekTick = getNextWeekTick;
exports.formatDate = formatDate;
exports.timestampToIsoTzFormat = timestampToIsoTzFormat;
exports.dateToTimestamp = dateToTimestamp;