在計(jì)算機(jī)中恋谭,自 UTC 時(shí)間 1970 年 1 月 1 日 00:00:00(該時(shí)間點(diǎn)稱為 Unix 紀(jì)元)起計(jì)的秒數(shù)练慕。Unix 時(shí)間赃绊,也稱為 UNIX 紀(jì)元時(shí)間或 POSIX 時(shí)間,是針對(duì) Unix 紀(jì)元測(cè)量時(shí)間的系統(tǒng)以现。(Unix 時(shí)間會(huì)忽略閏秒,因此不能真正表示 UTC 時(shí)間佩抹。)
日期時(shí)間字符串轉(zhuǎn)化為時(shí)間戳數(shù)值(以秒為單位)叼风,如下:
function ptime = getPosixtime(hms)
% hms = '20231009235955';
dt = datetime(hms,'InputFormat','yyyyMMddHHmmss','TimeZone','local');
% dt.TimeZone = "local";
% ptime = convertTo(dt,'posixtime');
ptime = posixtime(dt);
end
時(shí)間戳數(shù)值轉(zhuǎn)化為數(shù)值(以秒為單位)取董,如下:
function dtstr = getTimestamp(timestamp)
%timestamp = 1696867195;
dt = datetime(timestamp, 'ConvertFrom', 'posixtime' ,'TimeZone', 'local');
% datestr 函數(shù)官方已經(jīng)不推薦使用
dtstr = string(dt, "uuuuMMddHHmmss","zh_CN");
end
datetime 轉(zhuǎn)化為yyyymmdd字符串(以秒為單位)棍苹,如下:
function dtstr = formatDatetime(dt)
% dtstr = datestr(dt, 'yyyymmdd')
% dtstr = string(yyyymmdd(dt));
dtstr = string(dt, "uuuuMMdd","zh_CN");
end
上面語句中unix_timestamp單位是秒,核心調(diào)用函數(shù)是datetime
茵汰,需要注意的是:由于是國(guó)外數(shù)據(jù)集枢里,此處我將可讀時(shí)間的時(shí)區(qū)定位到印度時(shí)區(qū)(應(yīng)該是合理的)。 如果轉(zhuǎn)換時(shí)間是本地時(shí)間蹂午,可以使用local
時(shí)區(qū)控制栏豺,比如:
datetime(1593046814, 'ConvertFrom', 'posixtime' ,'TimeZone', 'local')
輸出: 2020-06-25 09:00:14
如果不記得Matlab中常用時(shí)間轉(zhuǎn)換的api,可以簡(jiǎn)單回顧如下:
datetime 函數(shù)
作用
datetime 用來創(chuàng)建表示時(shí)間點(diǎn)的數(shù)組(數(shù)組元素類型為 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
獲取當(dāng)前日期和時(shí)間的標(biāo)量 datetime 數(shù)組奥洼。 -
t = datetime(relativeDay)
獲取 relativeDay 指定日期的 datetime 數(shù)組。 -
t = datetime(DateString)
根據(jù)表示時(shí)間點(diǎn)的 DateStrings 中的文本創(chuàng)建一個(gè)日期時(shí)間值數(shù)組晚胡,datetime 函數(shù)會(huì)嘗試將 DateStrings 的格式與常用格式進(jìn)行匹配灵奖。
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 函數(shù)
作用
datenum 函數(shù)用于將日期和時(shí)間轉(zhuǎn)換成日期序列值,即將每個(gè)時(shí)間點(diǎn)表示為從 0000年 1月 0日起的天數(shù)估盘。
語法
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 數(shù)組)中的日期時(shí)間值轉(zhuǎn)換為日期序列值(即從 0000年 1月 0日以來的天數(shù)及其小數(shù)值瓷患,采用前 ISO 日歷形式)。 -
DateNumber = datenum(DateString)
將表示日期和時(shí)間的文本轉(zhuǎn)換為日期序列值(MatLab 自動(dòng)搜索確認(rèn)文本格式)遣妥。 -
DateNumber = datenum(DateString,formatIn)
手動(dòng)指定表示日期和時(shí)間的文本的格式為 formatIn(字符向量或字符串標(biāo)量)擅编,加快 MatLab 的處理速度。formatIn 的可取的文本格式如下表:
表示日期和時(shí)間的文本格式 | 舉例 |
---|---|
'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 函數(shù)
作用
datevec 函數(shù)可以將日期和時(shí)間(datetime 格式、datenum 格式或者文本格式)轉(zhuǎn)換為分量的向量爱态。
語法
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 數(shù)組 t 中的日期時(shí)間轉(zhuǎn)換為日期向量谭贪,返回一個(gè) [圖片上傳失敗...(image-afe7ac-1698853837967)] 的矩陣,其中每行對(duì)應(yīng)于 t 中的一個(gè)日期時(shí)間值锦担。 -
DateVector = datevec(DateNumber)
將一個(gè)或多個(gè)日期數(shù)字轉(zhuǎn)換為日期向量故河,返回一個(gè)包含 [圖片上傳失敗...(image-f0c7-1698853837967)] 個(gè)日期向量的 [圖片上傳失敗...(image-814f92-1698853837968)] 矩陣([圖片上傳失敗...(image-625ead-1698853837968)] 為 DateNumber 日期數(shù)字元素的個(gè)數(shù))。DateNumber 可以為向量或矩陣吆豹,沿維度從 1 逐漸增大(比如二維矩陣先列后行)鱼的,依次解釋對(duì)應(yīng)的日期數(shù)值。 -
DateVector = datevec(DateString)
將表示日期或時(shí)間的文本轉(zhuǎn)換成日期向量(MatLab 自動(dòng)搜索確認(rèn)文本格式)痘煤。 -
DateVector = datevec(DateString,formatIn)
手動(dòng)指定表示日期和時(shí)間的文本的格式為 formatIn(字符向量或字符串標(biāo)量)凑阶,加快 MatLab 的處理速度。formatIn 的可取的文本格式如下表:
表示日期和時(shí)間的文本格式 | 舉例 |
---|---|
'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 函數(shù)
作用
datestr 函數(shù)用于將日期和時(shí)間(datetime格式衷快、datevec格式宙橱、datenum格式)轉(zhuǎn)換為字符串格式。
需要說明的是蘸拔,目前官方已經(jīng)不推薦此函數(shù)师郑;
請(qǐng)改用 string
或 char
)將日期和時(shí)間轉(zhuǎn)換為字符串格式。
語法
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 數(shù)組 t 中的日期時(shí)間值轉(zhuǎn)換為日期和時(shí)間的文本(char调窍、cellstr宝冕、string 函數(shù)也可以將 datetime 值轉(zhuǎn)為文本)。返回包含 [圖片上傳失敗...(image-e3e644-1698853837968)] 行的字符數(shù)組([圖片上傳失敗...(image-2485db-1698853837968)] 是 t 中的日期時(shí)間值的總數(shù))邓萨。默認(rèn)情況下地梨,datestr 以day-month-year hour:minute:second
格式返回文本;若hour:minute:second
為00:00:00
缔恳,則返回的文本格式為day-month-year
宝剖。 -
DateString = datestr(DateVector)
將日期向量轉(zhuǎn)換為表示日期和時(shí)間的文本。datestr 返回包含 [圖片上傳失敗...(image-3efa03-1698853837968)] 行的字符數(shù)組([圖片上傳失敗...(image-7628fa-1698853837968)] 是DateVector 中日期向量的總數(shù))歉甚。 -
DateString = datestr(DateNumber)
將日期序列值轉(zhuǎn)換為表示日期和時(shí)間的文本万细,datestr 返回包含 [圖片上傳失敗...(image-8d2705-1698853837968)] 行的字符數(shù)組([圖片上傳失敗...(image-e36de8-1698853837968)] 是 DateNumber 中的日期序列值的總數(shù))。 -
DateString = datestr(___,formatOut)
在上述語法基礎(chǔ)上纸泄,使用 formatOut 指定輸出文本格式赖钞。formatOut 的可取值為-1(默認(rèn))| 字符向量 | 字符串向量 | 整數(shù)
∪凶遥可用于構(gòu)造 formatOut 字符向量的符號(hào)標(biāo)識(shí)符(可用連字符仁烹、空格和冒號(hào)等字符來分割字段)如下:
符號(hào)標(biāo)識(shí)符 | 說明 | 舉例 |
---|---|---|
yyyy | 完整年份 | 2020 |
yy | 兩位數(shù)年份 | 20 |
使用字母 Q 和一個(gè)數(shù)字的季度(僅年份格式可以與季度格式一起使用) | 2020/Q1(格式:yyyy/QQ) | |
mmmm | 使用全名的月份 | March |
mmm | 使用月份名的前三個(gè)字母 | Mar |
mm | 使用兩位數(shù)月份 | 03 |
m | 使用月份名的首字母大寫表示月份 | |
dddd | 使用日期對(duì)應(yīng)的星期 | Sunday |
ddd | 使用日期對(duì)應(yīng)的星期的前三個(gè)字母 | Sun |
dd | 兩位數(shù)日期 | 15 |
d | 日期對(duì)應(yīng)的星期的大寫首字母 | S |
HH | 兩位數(shù)小時(shí) | 18 |
MM | 兩位數(shù)分鐘 | 25 |
SS | 兩位數(shù)秒 | 30 |
FFF | 三位數(shù)毫秒 | 055 |
AM 或 PM | 表示一天中的前/后 12 個(gè)小時(shí)內(nèi)(在表示時(shí)間的文本中插入 AM 或 PM) | 18:25:30 PM |
【注】formatOut 字符向量必須遵循以下原則:
- 每個(gè)字段(年、月咧虎、日卓缰、時(shí)、分、秒)只能出現(xiàn)依次征唬。
- 當(dāng)使用 AM 或 PM 字段時(shí)捌显,還需提供 HH 字段。
- QQ 只能單獨(dú)使用或與年份標(biāo)識(shí)符一起使用总寒。
參考鏈接
MatLab函數(shù)
MatLab函數(shù)之datetime
MatLab函數(shù)之convertto
MatLab函數(shù)之yyyymmdd
MatLab函數(shù)之posixtime