是否有任何函数可以直接将Unix时间戳(由Time()[ctime library]返回)转换为struct tm或以Jalali格式保存日期和时间的东西?
我也不想让格里高利人变成贾拉利人我正在寻找一个算法来转换什么时间(空)直接返回到jalali日历。
最佳答案
我已经开发了一个类似的算法来将Julian Day Number转换为太阳回历(Jalali)日期原则是相同的:取一个时间参考点(在你的例子中是1970-01-01,等于JDN#2440587)并计算从那时起过去了多少年、月和天我的算法是基于阿克拉米斯的平均年计算,这与伊朗官方日历(在最近的过去一样)有很好的一致性。
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);