c#怎么实现公历日期转化为6位儒略日
答案:1 悬赏:0 手机版
解决时间 2021-03-26 12:27
- 提问者网友:謫仙
- 2021-03-26 09:22
c#怎么实现公历日期转化为6位儒略日
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-03-26 09:34
头一次听说儒略日还分几位的。
题主说的应该是 MJD(修正的儒略日期),根据公式就是一个输入一个输出的事儿。
public static long GetMJd(DateTime dateTime)
{
long Y = dateTime.Year, M = dateTime.Month, D = dateTime.Day;
long jd = D - 32075 + 1461 * (Y + 4800 + (M - 14) / 12) / 4 + 367 * (M - 2 - (M - 14) / 12 * 12) / 12 - 3 * ((Y + 4900 + (M - 14) / 12) / 100) / 4;
string mjdStr = (jd - 2400000.5).ToString().Split('.')[0];
return long.Parse(mjdStr);
}
返回结果可以用 0 补足 6 位:
string mjd = GetMJd(DateTime.Now.ToString().PadLeft(6, '0'));追问对方的数据库字段就是这么定义的.要求6位儒略日
2015-01-01转化为儒略日是 115001.不知道是怎么整出来的.追答JD(儒略日)是从 公元前4713年1月1日12:00,到目前的天数。
MJD(约化儒略日)是因为儒略日年代久远,直接用太大了,所以改从 1900年1月1日0:00 算的,比 JD 少了 2400000.5 天。
通用的就这两种。题主说的数据库可能采用了什么特殊的起始点吧(看上去是从 1700年2月20日0:00 计算的?这是什么鬼日子?)
题主说的应该是 MJD(修正的儒略日期),根据公式就是一个输入一个输出的事儿。
public static long GetMJd(DateTime dateTime)
{
long Y = dateTime.Year, M = dateTime.Month, D = dateTime.Day;
long jd = D - 32075 + 1461 * (Y + 4800 + (M - 14) / 12) / 4 + 367 * (M - 2 - (M - 14) / 12 * 12) / 12 - 3 * ((Y + 4900 + (M - 14) / 12) / 100) / 4;
string mjdStr = (jd - 2400000.5).ToString().Split('.')[0];
return long.Parse(mjdStr);
}
返回结果可以用 0 补足 6 位:
string mjd = GetMJd(DateTime.Now.ToString().PadLeft(6, '0'));追问对方的数据库字段就是这么定义的.要求6位儒略日
2015-01-01转化为儒略日是 115001.不知道是怎么整出来的.追答JD(儒略日)是从 公元前4713年1月1日12:00,到目前的天数。
MJD(约化儒略日)是因为儒略日年代久远,直接用太大了,所以改从 1900年1月1日0:00 算的,比 JD 少了 2400000.5 天。
通用的就这两种。题主说的数据库可能采用了什么特殊的起始点吧(看上去是从 1700年2月20日0:00 计算的?这是什么鬼日子?)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯