本文主要是介绍GNSS时间转化(GPS时-儒略日-年月日时分秒),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用python进行时间转换代码如下:
代码引用自:https://blog.csdn.net/qq_40185784/article/details/104956594
import math
def cal2mjd(cal):# cal2jd 将公历年月日时分秒转换到简化儒略日。# 输入公历时间列表,返回儒略日if (len(cal) < 6):for i in range(len(cal), 6):cal.append(0)year = cal[0]month = cal[1]day = cal[2] + (cal[3] * 3600 + cal[4] * 60 + cal[5]) / 86400;y = year + 4800m = monthif (year < 0):print('Year is wrong')return Falseif (m <= 2):# 1,2月视为前一年13,14月m = m + 12y = y - 1e = math.floor(30.6 * (m + 1))a = math.floor(y / 100)# 教皇格雷戈里十三世于1582年2月24日以教皇训令颁布,将1582年10月5日至14抹掉。1582年10月4日过完后第二天是10月15日if (year < 1582) or (year == 1582 and month < 10) or (year == 1582 and month == 10 and day < 15):b = -38else:b = math.floor((a / 4) - a)c = math.floor(365.25 * y)jd = b + c + e + day - 32167.5mjd = jd - 2400000.5return mjddef mjd2cal(mjd):# 从简化儒略日计算公历年月日时分秒# 返回的cal是年月日时分秒 列表# 公元1582年10月4日24:00点之前使用儒略历,公元1582年10月15日00:00点之后使用公历J = mjd + 2400000.5if (J < 1721423.5):# 公元1月1日0时BC = 1;else:BC = 0;if (J < 2299160.5):# 1582.10.4. 24:00 前j0 = math.floor(J + 0.5)dd = J + 0.5 - j0else:# 不是闰年的年数n1 = math.floor((J - 2342031.5) / 36524.25 / 4) + 1 # 1700.3.1.0n2 = math.floor((J - 2378555.5) / 36524.25 / 4) + 1 # 1800.3.1.0n3 = math.floor((J - 2415079.5) / 36524.25 / 4) + 1 # 1900.3.1.0j0 = n1 + n2 + n3 + J + 10dd = j0 + 0.5 - math.floor(j0 + 0.5)j0 = math.floor(j0 + 0.5)j0 = j0 + 32083year0 = math.ceil(j0 / 365.25) - 1year = year0 - 4800day = j0 - math.floor(year0 * 365.25)month = math.floor((day - 0.6) / 30.6) + 3day = day - round((month - 3) * 30.6)if (month > 12):month = month - 12year = year + 1year = year - BCsec = round(dd * 86400)hour = math.floor(sec / 3600)sec = sec - hour * 3600minute = math.floor(sec / 60)sec = sec - minute * 60return [year, month, day, hour, minute, sec]def cal2gps(cal):# cal2gps 将公历GPS时间转换到GPS周和周内的秒# 返回列表,周和周内秒mjd = cal2mjd(cal)# GPS从MJD44244开始e = mjd - 44244week = math.floor(e / 7)e = e - week * 7return [week, round(e * 86400)]def gps2cal(gpst):# gps2cal 将GPS周和周内的秒转换到公历GPS时间# 返回列表 年月日时分秒# GPS从MJD44244开始mjd = 44244 + (gpst[0] * 86400 * 7 + gpst[1]) / 86400cal = mjd2cal(mjd)return cal
测试代码如下:
import timesystem
line=input("请输入cal:")#line为字符串
cal=[]
for n in line.split(' '):#使用空格将字符串分离cal.append(int(n)) #将字符串转换为整数并存入列表
GPStime=timesystem.cal2gps(cal)
print(GPStime)
这篇关于GNSS时间转化(GPS时-儒略日-年月日时分秒)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!