fix: design

This commit is contained in:
sajjadtalkhabi
2026-05-19 22:53:05 +03:30
parent c82701888a
commit 8990ceaddd
44 changed files with 2678 additions and 435 deletions
+126
View File
@@ -0,0 +1,126 @@
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 (error) {
console.error('Date conversion error:', error)
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 (error) {
console.error('Date conversion error:', error)
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 (error) {
console.log('Jalali to Gregorian conversion error:', error)
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 (error) {
console.log('Jalali to Gregorian with time conversion error:', error)
return ''
}
}