在计算机中,自 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)
-
t = datetime
获取当前日期和时间的标量 datetime 数组。 -
t = datetime(relativeDay)
获取 relativeDay 指定日期的 datetime 数组。 -
t = datetime(DateString)
根据表示时间点的 DateStrings 中的文本创建一个日期时间值数组,datetime 函数会尝试将 DateStrings 的格式与常用格式进行匹配。
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)
-
DateNumber = datenum(t)
将 t (datetime 数组)中的日期时间值转换为日期序列值(即从 0000年 1月 0日以来的天数及其小数值,采用前 ISO 日历形式)。 -
DateNumber = datenum(DateString)
将表示日期和时间的文本转换为日期序列值(MatLab 自动搜索确认文本格式)。 -
DateNumber = datenum(DateString,formatIn)
手动指定表示日期和时间的文本的格式为 formatIn(字符向量或字符串标量),加快 MatLab 的处理速度。formatIn 的可取的文本格式如下表:
表示日期和时间的文本格式 | 举例 |
---|---|
'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(___)
-
DateVector = datevec(t)
将 datetime 数组 t 中的日期时间转换为日期向量,返回一个 [图片上传失败...(image-afe7ac-1698853837967)] 的矩阵,其中每行对应于 t 中的一个日期时间值。 -
DateVector = datevec(DateNumber)
将一个或多个日期数字转换为日期向量,返回一个包含 [图片上传失败...(image-f0c7-1698853837967)] 个日期向量的 [图片上传失败...(image-814f92-1698853837968)] 矩阵([图片上传失败...(image-625ead-1698853837968)] 为 DateNumber 日期数字元素的个数)。DateNumber 可以为向量或矩阵,沿维度从 1 逐渐增大(比如二维矩阵先列后行),依次解释对应的日期数值。 -
DateVector = datevec(DateString)
将表示日期或时间的文本转换成日期向量(MatLab 自动搜索确认文本格式)。 -
DateVector = datevec(DateString,formatIn)
手动指定表示日期和时间的文本的格式为 formatIn(字符向量或字符串标量),加快 MatLab 的处理速度。formatIn 的可取的文本格式如下表:
表示日期和时间的文本格式 | 举例 |
---|---|
'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格式)转换为字符串格式。
需要说明的是,目前官方已经不推荐此函数;
请改用 string
或 char
)将日期和时间转换为字符串格式。
语法
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')
-
DateString = datestr(t)
将 datetime 数组 t 中的日期时间值转换为日期和时间的文本(char、cellstr、string 函数也可以将 datetime 值转为文本)。返回包含 [图片上传失败...(image-e3e644-1698853837968)] 行的字符数组([图片上传失败...(image-2485db-1698853837968)] 是 t 中的日期时间值的总数)。默认情况下,datestr 以day-month-year hour:minute:second
格式返回文本;若hour:minute:second
为00:00:00
,则返回的文本格式为day-month-year
。 -
DateString = datestr(DateVector)
将日期向量转换为表示日期和时间的文本。datestr 返回包含 [图片上传失败...(image-3efa03-1698853837968)] 行的字符数组([图片上传失败...(image-7628fa-1698853837968)] 是DateVector 中日期向量的总数)。 -
DateString = datestr(DateNumber)
将日期序列值转换为表示日期和时间的文本,datestr 返回包含 [图片上传失败...(image-8d2705-1698853837968)] 行的字符数组([图片上传失败...(image-e36de8-1698853837968)] 是 DateNumber 中的日期序列值的总数)。 -
DateString = datestr(___,formatOut)
在上述语法基础上,使用 formatOut 指定输出文本格式。formatOut 的可取值为-1(默认)| 字符向量 | 字符串向量 | 整数
。可用于构造 formatOut 字符向量的符号标识符(可用连字符、空格和冒号等字符来分割字段)如下:
符号标识符 | 说明 | 举例 |
---|---|---|
yyyy | 完整年份 | 2020 |
yy | 两位数年份 | 20 |
使用字母 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 字符向量必须遵循以下原则:
- 每个字段(年、月、日、时、分、秒)只能出现依次。
- 当使用 AM 或 PM 字段时,还需提供 HH 字段。
- QQ 只能单独使用或与年份标识符一起使用。
参考链接
MatLab函数
MatLab函数之datetime
MatLab函数之convertto
MatLab函数之yyyymmdd
MatLab函数之posixtime
网友评论