Files
banu-front/src/utils/date-convertor.js
T
Server Migration b64f528c0d
Deploy banu-front / deploy (push) Successful in 1m40s
fix: complete registration frontend flow
2026-08-15 17:28:40 +03:30

123 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import jalaali from 'jalaali-js'
export function gregorianToJalaliString(isoString, separator = '/', persianDigits = false) {
if (!isoString) return ''
const match = isoString.match(/^(\d{4})-(\d{2})-(\d{2})/)
if (!match) return ''
const gy = Number.parseInt(match[1], 10)
const gm = Number.parseInt(match[2], 10)
const gd = Number.parseInt(match[3], 10)
try {
const jalali = jalaali.toJalaali(gy, gm, gd)
let jy = String(jalali.jy)
let jm = String(jalali.jm).padStart(2, '0')
let jd = String(jalali.jd).padStart(2, '0')
if (persianDigits) {
const enToFa = {
0: '۰',
1: '۱',
2: '۲',
3: '۳',
4: '۴',
5: '۵',
6: '۶',
7: '۷',
8: '۸',
9: '۹',
}
jy = jy.replace(/\d/g, (d) => enToFa[d])
jm = jm.replace(/\d/g, (d) => enToFa[d])
jd = jd.replace(/\d/g, (d) => enToFa[d])
}
return `${jy}${separator}${jm}${separator}${jd}`
} catch {
return ''
}
}
export function gregorianToJalaliStringLong(isoString, separator = '/', persianDigits = false) {
if (!isoString) return ''
const match = isoString.match(/^(\d{4})-(\d{2})-(\d{2})[\sT](\d{2}):(\d{2})/)
if (!match) return ''
const gy = Number.parseInt(match[1], 10)
const gm = Number.parseInt(match[2], 10)
const gd = Number.parseInt(match[3], 10)
const hour = match[4]
const minute = match[5]
try {
const jalali = jalaali.toJalaali(gy, gm, gd)
let jy = String(jalali.jy)
let jm = String(jalali.jm).padStart(2, '0')
let jd = String(jalali.jd).padStart(2, '0')
let hh = hour
let mm = minute
if (persianDigits) {
const enToFa = {
0: '۰',
1: '۱',
2: '۲',
3: '۳',
4: '۴',
5: '۵',
6: '۶',
7: '۷',
8: '۸',
9: '۹',
}
jy = jy.replace(/\d/g, (d) => enToFa[d])
jm = jm.replace(/\d/g, (d) => enToFa[d])
jd = jd.replace(/\d/g, (d) => enToFa[d])
hh = hh.replace(/\d/g, (d) => enToFa[d])
mm = mm.replace(/\d/g, (d) => enToFa[d])
}
return ` ${jy}${separator}${jm}${separator}${jd}، ${hh}:${mm}`
} catch {
return ''
}
}
export function JalaliToGregorianString(jalaliStr) {
try {
if (!jalaliStr) return null
const [jy, jm, jd] = jalaliStr.split('/').map(Number)
const greg = jalaali.toGregorian(jy, jm, jd)
return `${greg.gy}-${String(greg.gm).padStart(2, '0')}-${String(greg.gd).padStart(
2,
'0'
)}T00:00:00.000Z`
} catch {
return ''
}
}
export function JalaliToGregorianStringWithTime(jalaliDateTimeStr) {
try {
if (!jalaliDateTimeStr) return null
const parts = jalaliDateTimeStr.split(' ')
const datePart = parts[0]
const timePart = parts[1] || '00:00'
const [jy, jm, jd] = datePart.split('/').map(Number)
const greg = jalaali.toGregorian(jy, jm, jd)
return `${greg.gy}-${String(greg.gm).padStart(2, '0')}-${String(greg.gd).padStart(
2,
'0'
)}T${timePart}:00.000Z`
} catch {
return ''
}
}