gpt4 book ai didi

objective-c - 在 Objective C 中将公历日期转换为儒略日计数

转载 作者:太空狗 更新时间:2023-10-30 03:40:25 24 4
gpt4 key购买 nike

我需要 Objective C 方法将公历日期转换为儒略日,与此 PHP 方法 (GregorianToJD) 相同。

最佳答案

精度:将一天中的时间纳入儒略日期转换

这些 Julian 日期转换方法产生的结果与 U.S. Naval Observatory 相同 在线 Julian 日期转换器,比 NSDateFormatter 的 Julian 日期转换更精确。具体来说,下面的函数包含一天中的时间(例如小时、分钟和秒),而 NSDateFormatter 舍入到格林威治标准时间中午。

Swift 示例:

func jdFromDate(date : NSDate) -> Double {
let JD_JAN_1_1970_0000GMT = 2440587.5
return JD_JAN_1_1970_0000GMT + date.timeIntervalSince1970 / 86400
}

func dateFromJd(jd : Double) -> NSDate {
let JD_JAN_1_1970_0000GMT = 2440587.5
return NSDate(timeIntervalSince1970: (jd - JD_JAN_1_1970_0000GMT) * 86400)
}

Objective-C 示例:

double jdFromDate(NSDate *date) {
double JD_JAN_1_1970_0000GMT = 2440587.5;
return JD_JAN_1_1970_0000GMT + date.timeIntervalSince1970 / 86400;
}

NSDate dataFromJd(double jd) {
double JD_JAN_1_1970_0000GMT = 2440587.5;
return [[NSDate alloc] initWithTimeIntervalSince1970: (jd - JD_JAN_1_1970_0000GMT) * 86400)];
}

注意:研究证实 accepted answer将日期四舍五入为 24 小时间隔,因为它使用 NSDateFormatterg 格式说明符,返回 Modified Julian Day , 根据 UNICODE 标准的 Date Format Patterns Apple 的日期格式化 API 遵循(根据 Date Formatting Guide )。

关于objective-c - 在 Objective C 中将公历日期转换为儒略日计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22829680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com