是否有任何函数直接将Unix时间戳(由time()[ctime库]返回)转换为struct tm或以Jalali格式保存日期和时间的内容?
我并不是在寻找将格里高利转换为贾拉利的方法。我正在寻找一种算法来转换什么时间(NULL)直接返回到Jalali日历。
答案 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);