mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-29 17:42:12 +08:00
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import { format, parseISO } from "date-fns";
|
|
|
|
/**
|
|
* Converts a Galaxy time string to a Date object.
|
|
* @param {string} galaxyTime - The Galaxy time string in ISO format.
|
|
* @returns {Date} The parsed Date object.
|
|
*/
|
|
export function galaxyTimeToDate(galaxyTime: string): Date {
|
|
// Galaxy doesn't include Zulu time zone designator, but it's always UTC
|
|
// so we need to add it to parse the string correctly in JavaScript.
|
|
let time = galaxyTime;
|
|
if (!time.endsWith("Z")) {
|
|
time += "Z";
|
|
}
|
|
const date = parseISO(time);
|
|
if (isNaN(date.getTime())) {
|
|
throw new Error(`Invalid galaxyTime string: ${galaxyTime}`);
|
|
}
|
|
return date;
|
|
}
|
|
|
|
/**
|
|
* Formats a UTC Date object into a human-readable string, localized to the user's time zone.
|
|
* @param {Date} utcDate - The UTC Date object.
|
|
* @returns {string} The formatted date string.
|
|
*/
|
|
export function localizeUTCPretty(utcDate: Date): string {
|
|
return format(utcDate, "eeee MMM do H:mm:ss yyyy zz");
|
|
}
|
|
|
|
/**
|
|
* Converts a Galaxy time string to a human-readable formatted date string, localized to the user's time zone.
|
|
* @param {string} galaxyTime - The Galaxy time string in ISO format.
|
|
* @returns {string} The formatted date string.
|
|
*/
|
|
export function formatGalaxyPrettyDateString(galaxyTime: string): string {
|
|
const date = galaxyTimeToDate(galaxyTime);
|
|
return localizeUTCPretty(date);
|
|
}
|