matlab 时区转换

1. 北京时转世界时

%北京时转世界时
%时区差8
%例如要将北京时“2018年1月1日4时”转化为世界时
%输入y=BJ2UTC([2018 3 1 14])
%将返回字符串型世界时“2018030106”给变量y
function y=BJ2UTC(time)%输入参数为“年、月、日、时”数值型数组,输出变量为“年、月、日、时”字符串数组,格式“yyyymmddtt”
if time(4)>=8%当当前时间北京时和世界时在同一天时
    time(4)=time(4)-8;
else%当当前时间世界时在北京时的前一天
    if time(2)==1&time(3)==1%跨年
        %元旦的前一个月为去年12月
        time(1)=time(1)-1;
        time(2)=12;
        time(3)=eomday(time(1),time(2));%反回该月最后一天,返回值为数值(此处即去年12月的最后一天,数值为31)
        time(4)=24-(8-time(4));
    elseif time(2)~=1&time(3)==1%跨月
        %非元月的各月第一天的前一天为上一个月的最后一天
        time(2)=time(2)-1;
        time(3)=eomday(time(1),time(2));%反回该月最后一天,返回值为数值(此处即上个月的最后一天)
        time(4)=24-(8-time(4));
    else%同月
        time(3)=time(3)-1;
        time(4)=24-(8-time(4));
    end
end
%返回字符串型世界时
yyyy=num2str(time(1));
if time(2)<10
    mm=['0',num2str(time(2))];
else
    mm=num2str(time(2));
end
if time(3)<10
    dd=['0',num2str(time(3))];
else
    dd=num2str(time(3));
end
if time(4)<10
    tt=['0',num2str(time(4))];
else
    tt=num2str(time(4));
end
y=[yyyy mm dd tt];
end

2. 世界时转北京时

% 转换时区
t0 = datetime(2016,12,31,17,0,0);   % 初始时间
for i = 0 : (365 * 24 - 1)
    t_UTC(i+1,1) = t0 + i/24;   % 世界时间
    t_BJ(i+1,1) = t0+i/24+8/24; % 北京时间
end
t_BJ.Format = 'yyyyMMddHH';     %  转换成任意想要的时间格式,'yyyyMMMdd','yyyyMMMMdd','MM月dd日'
t_BJ_str = datestr(t_BJ,'yyyymmddhh');   %datetime数据类型转为char类型
% 替换原始世界时间数据
filedata(:,4) = str2num(t_BJ_str(:,1:4));
filedata(:,5) = str2num(t_BJ_str(:,5:6));
filedata(:,6) = str2num(t_BJ_str(:,7:8));
filedata(:,7) = str2num(t_BJ_str(:,9:10));
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值