forked from Yara724/api
blame and claim refactored
This commit is contained in:
59
src/helpers/date-jalali.ts
Normal file
59
src/helpers/date-jalali.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* Converts an ISO date string or Date to Jalali (Persian) date and time.
|
||||
* @param input - ISO date string (e.g. 2026-02-08T13:51:20.747+00:00) or Date
|
||||
* @returns Tuple [dateStr, timeStr] e.g. ['1404/11/24', '13:37']
|
||||
*/
|
||||
export function toJalaliDateAndTime(
|
||||
input: string | Date,
|
||||
): [string, string] {
|
||||
const d = new Date(input);
|
||||
const dateStr = toJalaliDate(d);
|
||||
const timeStr = toJalaliTime(d);
|
||||
return [dateStr, timeStr];
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a Date to Jalali date string (e.g. 1404/11/24).
|
||||
*/
|
||||
export function toJalaliDate(d: Date): string {
|
||||
const persianDate = d.toLocaleDateString("fa-IR", {
|
||||
year: "numeric",
|
||||
month: "2-digit",
|
||||
day: "2-digit",
|
||||
});
|
||||
return persianDigitsToEnglish(persianDate, "/");
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a Date to 24h time string (e.g. 13:37).
|
||||
*/
|
||||
export function toJalaliTime(d: Date): string {
|
||||
const hours = d.getHours().toString().padStart(2, "0");
|
||||
const minutes = d.getMinutes().toString().padStart(2, "0");
|
||||
return `${hours}:${minutes}`;
|
||||
}
|
||||
|
||||
const PERSIAN_TO_ENGLISH: Record<string, string> = {
|
||||
"۰": "0",
|
||||
"۱": "1",
|
||||
"۲": "2",
|
||||
"۳": "3",
|
||||
"۴": "4",
|
||||
"۵": "5",
|
||||
"۶": "6",
|
||||
"۷": "7",
|
||||
"۸": "8",
|
||||
"۹": "9",
|
||||
};
|
||||
|
||||
function persianDigitsToEnglish(str: string, separator: string): string {
|
||||
return str
|
||||
.split(separator)
|
||||
.map((part) =>
|
||||
part
|
||||
.split("")
|
||||
.map((char) => PERSIAN_TO_ENGLISH[char] ?? char)
|
||||
.join(""),
|
||||
)
|
||||
.join("/");
|
||||
}
|
||||
Reference in New Issue
Block a user