贾拉利日历

时间:2017-06-24 10:16:41

标签: c++ algorithm time calendar

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

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

1 个答案:

答案 0 :(得分:1)

我开发了一种类似的算法,将Julian Day Number转换为Solar Hijri(〜= Jalali)日历日期。原则是相同的:采取参考时间点(在您的情况下1970-01-01等于JDN#2440587)并计算从那时起过去的年,月和日。我的算法基于Akramis的平均年计算,与伊朗官方日历(近期相同)具有良好的一致性。

C实现可在此处获取:

https://github.com/soroush/libcalendars/blob/dev/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);