mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	chore(client/ts): port utils/formatters
This commit is contained in:
		
							parent
							
								
									a349223e54
								
							
						
					
					
						commit
						0bad36b9f2
					
				@ -1,17 +1,16 @@
 | 
			
		||||
type DateTimeStyle = "full" | "long" | "medium" | "short" | "none" | undefined;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Formats the given date and time to a string based on the current locale.
 | 
			
		||||
 * @param {string | Date | number} date 
 | 
			
		||||
 * @param {"full" | "long" | "medium" | "short" | "none" | undefined} dateStyle 
 | 
			
		||||
 * @param {"full" | "long" | "medium" | "short" | "none" | undefined} timeStyle 
 | 
			
		||||
 */
 | 
			
		||||
export function formatDateTime(date, dateStyle = "medium", timeStyle = "medium") {
 | 
			
		||||
export function formatDateTime(date: string | Date | number, dateStyle: DateTimeStyle = "medium", timeStyle: DateTimeStyle = "medium") {
 | 
			
		||||
    const locale = navigator.language;
 | 
			
		||||
 | 
			
		||||
    let parsedDate;
 | 
			
		||||
    if (typeof date === "string") {
 | 
			
		||||
    if (typeof date === "string" || typeof date === "number") {
 | 
			
		||||
        // Parse the given string as a date
 | 
			
		||||
        parsedDate = new Date(date);
 | 
			
		||||
    } else if (typeof date === "number" || date instanceof Date) {
 | 
			
		||||
    } else if (date instanceof Date) {
 | 
			
		||||
        // The given date is already a Date instance or a number
 | 
			
		||||
        parsedDate = date;
 | 
			
		||||
    } else {
 | 
			
		||||
@ -19,16 +18,18 @@ export function formatDateTime(date, dateStyle = "medium", timeStyle = "medium")
 | 
			
		||||
        throw new TypeError(`Invalid type for the "date" argument.`);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    if (timeStyle === "none") {
 | 
			
		||||
        // Format only the date
 | 
			
		||||
        return parsedDate.toLocaleDateString(locale, {dateStyle});
 | 
			
		||||
    } else if (dateStyle === "none") {
 | 
			
		||||
        // Format only the time
 | 
			
		||||
        return parsedDate.toLocaleTimeString(locale, {timeStyle});
 | 
			
		||||
    } else {
 | 
			
		||||
    if (timeStyle !== "none" && dateStyle !== "none") {
 | 
			
		||||
        // Format the date and time
 | 
			
		||||
        const formatter = new Intl.DateTimeFormat(navigator.language, {dateStyle, timeStyle});
 | 
			
		||||
        return formatter.format(parsedDate);
 | 
			
		||||
    } else if (timeStyle === "none" && dateStyle !== "none") {
 | 
			
		||||
        // Format only the date
 | 
			
		||||
        return parsedDate.toLocaleDateString(locale, {dateStyle});
 | 
			
		||||
    } else if (dateStyle === "none" && timeStyle !== "none") {
 | 
			
		||||
        // Format only the time
 | 
			
		||||
        return parsedDate.toLocaleTimeString(locale, {timeStyle});
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    throw new Error("Incorrect state.");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user