我需要 Objective C 方法将公历日期转换为儒略日,与 PHP 方法 (GregorianToJD) 相同。
精度:合并一天中的时间儒略日期转换
这些儒略日期转换方法产生的结果与美国海军天文台 https://aa.usno.navy.mil/data/JulianDate在线儒略日期转换器,比NSDateFormatter's
儒略日期转换。具体来说,以下函数包含一天中的时间(例如小时、分钟和秒),而NSDateFormatter
转至格林尼治标准时间中午。
斯威夫特的例子:
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)];
}
Note: 研究证实,接受的答案 https://stackoverflow.com/a/22830318/2079103将日期舍入为 24 小时间隔,因为它使用g
格式说明符NSDateFormatter
,它返回改良儒略日 http://scienceworld.wolfram.com/astronomy/ModifiedJulianDate.html,根据 UNICODE 标准日期格式模式 http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_PatternsApple 的日期格式化 API 遵守(根据日期格式指南 https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)