UTC与GPS时间转换-[week, sow]

UTC与GPS时间转换-[week, sow]

Ref: Global Positioning System

utc2gps

matlab源码

function res = utc2gps(utc_t, weekStart)
    %% parameters
    sec_day  = 86400;
    sec_week = 604800;
    leapsec = 18;    
    % 默认周一为一周的开始
    if nargin < 2
        weekStart = datenum('1980-01-06 00:00:00'); % 默认周一为一周的开始
        weekStart = weekStart * sec_day - leapsec;
    end

    utc_t_num = datenum(utc_t) * sec_day;
    gps_week  = floor((utc_t_num - weekStart)/sec_week);
    gps_sec = mod((utc_t_num - weekStart), sec_week);
    gps_sec = round(gps_sec, 3);
    res = [gps_week, gps_sec];
end

gps2utc

matlab源码

function res = gps2utc(week_num, sow)    
    %% parameters
    sec_day  = 86400;
    sec_week = 604800;
    leapsec = 18;    
    % 默认周一为一周的开始
    if nargin < 2
        sow  = 0;
    end
    weekStart = datenum('1980-01-06 00:00:00'); % from start time
    weekStart = weekStart * sec_day - leapsec;
    dnum = (week_num * sec_week + sow + weekStart)/sec_day;  % unit: day
    res = datetime(dnum,'ConvertFrom','datenum');
end

测试

clear
close all

addpath 'obs_read_lib/'
% 创建一个datetime对象
date = [2024 05 26 00 00 00.200000];
t = datetime(date);
 
% 转换为SOW
gps_t = utc2gps(t);
date_re = gps2utc(gps_t(:,1),gps_t(:,2));
gps_t_check = utc2gps(date_re);
% 显示结果
disp(gps_t);

测试结果

参考

GPS 时间转换在线工具
GPS时间计算工具

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值