北斗时间周和GPS时间周计算,JAVA为例

news/2024/11/8 18:29:54/

    最近接了个需求,解析从美国NASA官网下载的文件和从北斗官网下载的文件,而文件名字是以GPS时间周和周几、北斗时间周和周几命名,每天都会有新数据,定时任务获取文件,定时任务获取就需要程序根据当天时间自动计算文件名字。

   想计算这两个时间周,就要先明白其各自的计算规则

   GPS时间是以 "1980-01-06 00:00:00" 为起点的,

   北斗时间是以"2006-01-01 00:00:00"为起点

  这个两个起始时间,是解决问题最关键的部分

  要想计算时间周,就需要获取当前时间,减去各自的开始时间,获取到天数,再进行周和周几计算

/*** 计算两个时间之间的天数* @author yxt* @param d1* @param d2* @return*/
public static long calendarminus(Calendar d1, Calendar d2) {if (d1 == null || d2 == null) {return 0;}return (d1.getTimeInMillis() - d2.getTimeInMillis()) / (3600 * 24000);}/*** 获取gps时间周和北斗时间周* * @author yxt* @throws Exception*/
public static void getGpsAndBeidouWeek() throws Exception{//2021.5.11的文件名为:GPS_DATA_21571.text、BEIDOU_DATA_8011.text//其中21571中前四位为gps时间周,最后一位为周几(以周一为0)//其中8011中前三位为北斗时间周,最后一位为周几(以周一为0)//计算的关键在于知道gps开始时间为"1980-01-06 00:00:00",北斗开始时间为:"2006-01-01 00:00:00"SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//日期格式化Calendar calendarNow = Calendar.getInstance(); //// gps时间周计算Calendar calendarGps= Calendar.getInstance(); //java.util包Date gpsStartDate = sdfTime.parse("1980-01-06 00:00:00");calendarGps.setTime(gpsStartDate);long gpsToTodayDays = calendarminus(calendarNow, calendarGps);long gpsWeeks = gpsToTodayDays / 7;long dayOfGpsWeek = gpsToTodayDays % 7-1;System.out.println(gpsWeeks);System.out.println(dayOfGpsWeek);// 北斗时间周计算Calendar calendarBeidou= Calendar.getInstance(); //java.util包Date beidouStartDate = sdfTime.parse("2006-01-01 00:00:00");calendarBeidou.setTime(beidouStartDate);long beidouToTodayDays = calendarminus(calendarNow, calendarBeidou);long beidouWeeks = beidouToTodayDays / 7;long dayOfBeidouWeek = beidouToTodayDays % 7 -1;System.out.println(beidouWeeks);System.out.println(dayOfBeidouWeek);}

 


http://www.ppmy.cn/news/206374.html

相关文章

c语言utc时间转换,gps时转换为utc时间方法

gps时由整周(7天)计数,与周内秒计数两部分组成。转换为utc时间可以从1980年1月6日0时,基本思路计算出总共的秒数,然后通过计算总秒数包含了多少整年,整年减掉后取余,计算年内多少整月,依次类推就可以计算出最后utc时刻…

Android如何计算时间差

代码如下: DateFormat df new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date d1 df.parse("2006-05-26 12:00:00"); Date d2 df.parse("2006-07-02 11:20:00"); long diff d1.getTime() - d2.getTime();//这样得到的差值…

计算两个时间相差几年几月

"2015-09-05","2018-05-10" 2年8月 TimeDifferUtil 下载地址:https://download.csdn.net/download/qzc2017/10893364 String ytime TimeDifferUtil.getTime(DateUtils.formatYY_MM_DD(info.getOnline()),DateUtils.formatYY_MM_DD(Syst…

UPS不间断电源放电时间计算方法

a.基本公式: 负载的有功功率支持时间电池放出容量电池电压UPS逆变效率 其中:负载的有功功率负载总功率负载的功率因数 UPS逆变效率≈0.9 电池放出容量电池标称容量电池放电效率 电池放电效率与放电电流或放电时间有关,可参照下表确定&#xf…

使用 curl 下载需要太长时间?试试在 cURL 中设置超时

cURL是一个出色的网络通信工具,它代表“客户端 URL”。几乎所有设备都使用地球上连接到 Internet 的 cURL,cURL 最广泛的用途是从终端中的远程服务器下载文件。 连接到服务器以进行任何类型的通信的初始阶段是等待响应,延迟可能由于多种原因…

计算起点地址和终点地址的最短驾车距离和驾车时间

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 需求: 在一个excel的xlsx表格中有很多起点的地址和终点的地址,要批量计算两个地址之间的距离和驾车时间,按照百度地图的最短距离计算。最后把得出的行驶距离和驾车时…

linux下载navicat

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/happy_bigqiang/article/details/54234559 参考链接:http://blog.csdn.net/loadrunn/article/details/50886772 PS:linux一般文件源码放在 /usr/local/src文件夹&…

软件测试硬盘使用时间,硬盘使用时间检测工具_硬盘使用时间清零

2016-12-27 12:57:25 使用HD Tune查看硬盘使用时间,可按以下步骤进行:   1 运行HD Tune主程序   2 在硬盘列表中选择需要查看使用时间的硬盘   3 选择“健康状况”标签,09属... 2016-12-09 06:11:53 这个通电次数是按硬盘磁头重置的次数算的。即你开机的次数+重启的…