blob: 66efdf5bb3fa330c825a24a81b887a67f602e7ae (
plain)
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
|
/**
* Parses and formats the given date-time string representation.
*
* The format assumed is "YYYY-MM-DDTHH:MM:SS".
*
* @param dateTimeString A string expressing a date and a time, in the above mentioned format.
* @returns {string} A human-friendly string version of that date and time.
*/
export function parseAndFormatDateTime(dateTimeString) {
return formatDateTime(parseDateTime(dateTimeString))
}
/**
* Parses date-time string representations and returns a parsed object.
*
* The format assumed is "YYYY-MM-DDTHH:MM:SS".
*
* @param dateTimeString A string expressing a date and a time, in the above mentioned format.
* @returns {object} A Date object with the parsed date and time information as content.
*/
export function parseDateTime(dateTimeString) {
return new Date(dateTimeString + '.000Z')
}
/**
* Serializes the given date and time value to a human-friendly string.
*
* @param dateTime An object representation of a date and time.
* @returns {string} A human-friendly string version of that date and time.
*/
export function formatDateTime(dateTime) {
let date
const currentDate = new Date()
date =
addPaddingToTwo(dateTime.getDay()) +
'/' +
addPaddingToTwo(dateTime.getMonth()) +
'/' +
addPaddingToTwo(dateTime.getFullYear())
if (dateTime.getFullYear() === currentDate.getFullYear() && dateTime.getMonth() === currentDate.getMonth()) {
if (dateTime.getDate() === currentDate.getDate()) {
date = 'Today'
} else if (dateTime.getDate() === currentDate.getDate() - 1) {
date = 'Yesterday'
}
}
return date + ', ' + addPaddingToTwo(dateTime.getHours()) + ':' + addPaddingToTwo(dateTime.getMinutes())
}
/**
* Formats the given number of seconds/ticks to a formatted time representation.
*
* @param seconds The number of seconds.
* @returns {string} A string representation of that amount of second, in the from of HH:MM:SS.
*/
export function convertSecondsToFormattedTime(seconds) {
if (seconds <= 0) {
return '0s'
}
let hour = Math.floor(seconds / 3600)
let minute = Math.floor(seconds / 60) % 60
let second = seconds % 60
hour = isNaN(hour) ? 0 : hour
minute = isNaN(minute) ? 0 : minute
second = isNaN(second) ? 0 : second
if (hour === 0 && minute === 0) {
return second + 's'
} else if (hour === 0) {
return minute + 'm' + addPaddingToTwo(second) + 's'
} else {
return hour + 'h' + addPaddingToTwo(minute) + 'm' + addPaddingToTwo(second) + 's'
}
}
/**
* Pads the given integer to have at least two digits.
*
* @param integer An integer to be padded.
* @returns {string} A string containing the padded integer.
*/
function addPaddingToTwo(integer) {
if (integer < 10) {
return '0' + integer.toString()
} else {
return integer.toString()
}
}
|