- UTC(Universal Time, Co-ordinated) :世界协调时间
- MJD(Modified Julian Date): 简化的儒略日
- JD(Julian Day):儒略日
连续纪日的儒略日(JD):以儒略历公元前4713年1月1日的GMT正午为第0日的开始。
简化儒略日(MJD): MJD=JD-.5 MJD的第0日是从公历1858年11月17日的GMT零时开始的。
计算MJD时间的C++代码:
#include <bits/stdc++.h> using namespace std; //年月日 转 mjd long cal_mjd(int y, int m, int d) { //计算出儒略日 int 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); //简化儒略日,其定义为: //MJD=JD-.5 int mjd = jd - .5; return mjd; } //mjd 转 年月日 void MJD2YMD(long MJD) { int year, month, day; short K; short dayInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; year = ((MJD) * 100 - ) / 36525; month = ((MJD) * 10000 - - year * 36525 / 100 * 10000) / ; day = (MJD) - 14956 - (year * 36525) / 100 - (month * ) / 10000; if (month == 14 || month == 15) { K = 1; } else { K = 0; } year = year + K; month = month - 1 - K * 12; if ((year % 4 == 0) && (year % 400 != 0)) { dayInMonth[2] = 29; } if (day > dayInMonth[month]) { day -= dayInMonth[month]; month += 1; if (month > 12) { month -= 12; year += 1; } } int Y = year + 1900; int M = month; int D = day; cout << "year = " << Y << " Month = " << M << " Day = " << D << endl; return; } int main() { long mjd = cal_mjd(2023, 9, 15); cout << "get MJD:" << mjd << endl; cout << "MJD to Date:"; MJD2YMD(mjd); return 0; }
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/69659.html