allows controlling duration on the frontend
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
// This function is slow
|
||||
export function getDateString(date: Date, utc: boolean, millis: boolean) {
|
||||
export function getDateString(
|
||||
date: Date,
|
||||
utc: boolean,
|
||||
millis: boolean,
|
||||
): string {
|
||||
const year = utc ? date.getUTCFullYear() : date.getFullYear();
|
||||
const month = (
|
||||
(utc ? date.getMonth() : date.getMonth()) + 1
|
||||
@@ -47,3 +51,47 @@ export function getDateString(date: Date, utc: boolean, millis: boolean) {
|
||||
});
|
||||
return `${year}/${month}/${day} ${hour}:${minute}:${second}${millis ? `.${milliseconds}` : ''}${utc ? 'Z' : ''}`;
|
||||
}
|
||||
|
||||
export function getDurationString(duration_millis: number): string {
|
||||
const millis = duration_millis % 1000;
|
||||
const duration_secs = Math.floor(duration_millis / 1000);
|
||||
const seconds = duration_secs % 60;
|
||||
const duration_minutes = Math.floor(duration_secs / 60);
|
||||
const minutes = duration_minutes % 60;
|
||||
const duration_hours = Math.floor(duration_minutes / 60);
|
||||
|
||||
const millis_str = millis.toLocaleString('en-US', {
|
||||
minimumIntegerDigits: 3,
|
||||
useGrouping: false,
|
||||
maximumFractionDigits: 0,
|
||||
});
|
||||
const seconds_str = seconds.toLocaleString('en-US', {
|
||||
minimumIntegerDigits: 2,
|
||||
useGrouping: false,
|
||||
maximumFractionDigits: 0,
|
||||
});
|
||||
const minutes_str = minutes.toLocaleString('en-US', {
|
||||
minimumIntegerDigits: 2,
|
||||
useGrouping: false,
|
||||
maximumFractionDigits: 0,
|
||||
});
|
||||
const hours_str = duration_hours.toLocaleString('en-US', {
|
||||
minimumIntegerDigits: 1,
|
||||
useGrouping: false,
|
||||
maximumFractionDigits: 0,
|
||||
});
|
||||
return `${hours_str}:${minutes_str}:${seconds_str}.${millis_str}`;
|
||||
}
|
||||
|
||||
export function parseDurationString(duration: string): number {
|
||||
const parts = duration.split(':');
|
||||
const seconds_str = parts.length >= 1 ? parts[parts.length - 1] : '0';
|
||||
const minutes_str = parts.length >= 2 ? parts[parts.length - 2] : '0';
|
||||
const hours_str = parts.length >= 3 ? parts[parts.length - 3] : '0';
|
||||
|
||||
const seconds = Number.parseFloat(seconds_str);
|
||||
const minutes = Number.parseFloat(minutes_str);
|
||||
const hours = Number.parseFloat(hours_str);
|
||||
|
||||
return Math.floor(((hours * 60 + minutes) * 60 + seconds) * 1000);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user