Matlab中时间戳与字符串转换(以秒为单位)

2023-10-31  本文已影响0人  硅谷干货

在计算机中,自 UTC 时间 1970 年 1 月 1 日 00:00:00(该时间点称为 Unix 纪元)起计的秒数。Unix 时间,也称为 UNIX 纪元时间POSIX 时间,是针对 Unix 纪元测量时间的系统。(Unix 时间会忽略闰秒,因此不能真正表示 UTC 时间。)

日期时间字符串转化为时间戳数值(以秒为单位),如下:

function ptime = getPosixtime(hms)
    % hms = '20231009235955';
    dt = datetime(hms,'InputFormat','yyyyMMddHHmmss','TimeZone','local');
    % dt.TimeZone = "local";
    % ptime = convertTo(dt,'posixtime');
    ptime = posixtime(dt);
end

时间戳数值转化为数值(以秒为单位),如下:

function dtstr = getTimestamp(timestamp)
    %timestamp = 1696867195;
    dt = datetime(timestamp, 'ConvertFrom', 'posixtime' ,'TimeZone', 'local');
    % datestr 函数官方已经不推荐使用
    dtstr = string(dt, "uuuuMMddHHmmss","zh_CN");
end

datetime 转化为yyyymmdd字符串(以秒为单位),如下:

function dtstr = formatDatetime(dt)
    % dtstr = datestr(dt, 'yyyymmdd')
    % dtstr = string(yyyymmdd(dt));
    dtstr = string(dt, "uuuuMMdd","zh_CN");
end

上面语句中unix_timestamp单位是秒,核心调用函数是datetime,需要注意的是:由于是国外数据集,此处我将可读时间的时区定位到印度时区(应该是合理的)。 如果转换时间是本地时间,可以使用local时区控制,比如:

datetime(1593046814, 'ConvertFrom', 'posixtime' ,'TimeZone', 'local')

输出: 2020-06-25 09:00:14

如果不记得Matlab中常用时间转换的api,可以简单回顾如下:

datetime 函数

作用

datetime 用来创建表示时间点的数组(数组元素类型为 datetime)。

语法

t = datetime
t = datetime(relativeDay)
t = datetime(DateString)
t = datetime(DateStrings,'InputFormat',infmt)
t = datetime(DateVectors)
t = datetime(Y,M,D)
t = datetime(Y,M,D,H,MI,S)
t = datetime(Y,M,D,H,MI,S,MS)
t = datetime(X,'ConvertFrom',dateType)
t = datetime(___,Name,Value)

DateStrings 常用文本格式如下:

DateStrings 文本格式 举例
'yyyy-MM-dd' '2020-03-13'
'dd/MM/yyyy' '13/03/2020'
'dd.MM.yyyy' '13.03.2020'
'yyyy年 MM月 dd日' '2020年 03月 13日'
'MMMM d, yyyy' 'March 13, 2020'
'eeee, MMMM d, yyyy h:mm a' 'Friday, March 13, 2020 5:25 PM'
'MMMM d, yyyy HH:mm:ss Z' 'March 13, 2020 17:25:15 -0400'
'yyyy-MM-dd''T''HH:mmXXX' '2020-03-13T17:25-04:00'
'yyyy-MM-dd HH:mm:ss.SSS' '2020-03-13 17:25:15.123'

datenum 函数

作用

datenum 函数用于将日期和时间转换成日期序列值,即将每个时间点表示为从 0000年 1月 0日起的天数。

语法

DateNumber = datenum(t)
DateNumber = datenum(DateString)
DateNumber = datenum(DateString,formatIn)
DateNumber = datenum(DateString,PivotYear)
DateNumber = datenum(DateString,formatIn,PivotYear)
DateNumber = datenum(DateVector)
DateNumber = datenum(Y,M,D)
DateNumber = datenum(Y,M,D,H,MI,S)
表示日期和时间的文本格式 举例
'dd-mmm-yyyy HH:MM:SS' '15-Mar-2020 18:25:30'
'dd-mmm-yyyy' '15-Mar-2020'
'mm/dd/yyyy' '03/15/2020'
'mm/dd/yy' '03/15/20
'mm/dd' '03/15'
'mmm.dd,yyyy HH:MM:SS' 'Mar.15,2020 18:25:30'
'mmm.dd,yyyy' 'Mar.15,2020'
'yyyy-mm-dd HH:MM:SS' '2020-03-15 18:25:30'
'yyyy-mm-dd' '2020-03-15'
'yyyy/mm/dd' '2020/03/15'
'HH:MM:SS' '18:25:30'
'HH:MM:SS AM' 或 'HH:MM:SS PM' '06:25:30 PM'
'HH:MM' '18:25'
'HH:MM AM' 或 'HH:MM PM' '06:25 PM'

datevec 函数

作用

datevec 函数可以将日期和时间(datetime 格式、datenum 格式或者文本格式)转换为分量的向量。

语法

DateVector = datevec(t)
DateVector = datevec(DateNumber)
DateVector = datevec(DateString)
DateVector = datevec(DateString,formatIn)
DateVector = datevec(DateString,PivotYear)
DateVector = datevec(DateString,formatIn,PivotYear)
[Y,M,D,H,MI,S] = datevec(___)
表示日期和时间的文本格式 举例
'dd-mmm-yyyy HH:MM:SS' '15-Mar-2020 18:25:30'
'dd-mmm-yyyy' '15-Mar-2020'
'mm/dd/yyyy' '03/15/2020'
'mm/dd/yy' '03/15/20
'mm/dd' '03/15'
'mmm.dd,yyyy HH:MM:SS' 'Mar.15,2020 18:25:30'
'mmm.dd,yyyy' 'Mar.15,2020'
'yyyy-mm-dd HH:MM:SS' '2020-03-15 18:25:30'
'yyyy-mm-dd' '2020-03-15'
'yyyy/mm/dd' '2020/03/15'
'HH:MM:SS' '18:25:30'
'HH:MM:SS AM' 或 'HH:MM:SS PM' '06:25:30 PM'
'HH:MM' '18:25'
'HH:MM AM' 或 'HH:MM PM' '06:25 PM'

datestr 函数

作用

datestr 函数用于将日期和时间(datetime格式、datevec格式、datenum格式)转换为字符串格式。

需要说明的是,目前官方已经不推荐此函数;
请改用 stringchar)将日期和时间转换为字符串格式。

语法

DateString = datestr(t)
DateString = datestr(DateVector)
DateString = datestr(DateNumber)
DateString = datestr(___,formatOut)
DateString = datestr(DateStringIn)
DateString = datestr(DateStringIn,formatOut)
DateString = datestr(DateStringIn,formatOut,PivotYear)
DateString = datestr(___,'local')
符号标识符 说明 举例
yyyy 完整年份 2020
yy 两位数年份 20
QQ 使用字母 Q 和一个数字的季度(仅年份格式可以与季度格式一起使用) 2020/Q1(格式:yyyy/QQ)
mmmm 使用全名的月份 March
mmm 使用月份名的前三个字母 Mar
mm 使用两位数月份 03
m 使用月份名的首字母大写表示月份
dddd 使用日期对应的星期 Sunday
ddd 使用日期对应的星期的前三个字母 Sun
dd 两位数日期 15
d 日期对应的星期的大写首字母 S
HH 两位数小时 18
MM 两位数分钟 25
SS 两位数秒 30
FFF 三位数毫秒 055
AM 或 PM 表示一天中的前/后 12 个小时内(在表示时间的文本中插入 AM 或 PM) 18:25:30 PM

【注】formatOut 字符向量必须遵循以下原则:

  1. 每个字段(年、月、日、时、分、秒)只能出现依次。
  2. 当使用 AM 或 PM 字段时,还需提供 HH 字段。
  3. QQ 只能单独使用或与年份标识符一起使用。

参考链接
MatLab函数
MatLab函数之datetime
MatLab函数之convertto
MatLab函数之yyyymmdd
MatLab函数之posixtime

上一篇 下一篇

猜你喜欢

热点阅读