贾拉利日历

问题描述 投票:0回答:1

是否有任何函数可以直接将Unix时间戳(由time() [ctime库]返回)转换为struct tm或以Jalali格式保存日期和时间的东西?

我并不是在寻找将公历转换为贾拉利的方法。我正在寻找一种算法来将时间(NULL)直接返回到 Jalali 日历。

c++ algorithm time calendar
1个回答
3
投票

我开发了一种类似的算法,将儒略日数转换为阳历回历(~= Jalali)日历日期。原理是相同的:取一个参考时间点(在您的情况下为 1970-01-01,等于 JDN #2440587)并计算从那时起已经过去了多少年、月和日。我的算法基于 Akramis 的平均年计算,该计算与伊朗官方日历(最近的过去相同)有很好的一致性。

C 实现可在此处获取:

https://github.com/soroush/libcalendars/blob/dev/lib/src/cl-solar-hijri.c

请注意,只需添加 2440587 偏移量即可将 unix 时间转换为 JDN。所以你需要:

int16_t year;
uint8_t month;
int16_t day;
jdn_to_sh(unix_time + 2440587, &year, &month, &date);
© www.soinside.com 2019 - 2024. All rights reserved.