Matlab中時(shí)間戳與字符串轉(zhuǎn)換(以秒為單位)

在計(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)改用 stringchar)將日期和時(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:second00: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
QQ 使用字母 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 字符向量必須遵循以下原則:

  1. 每個(gè)字段(年、月咧虎、日卓缰、時(shí)、分、秒)只能出現(xiàn)依次征唬。
  2. 當(dāng)使用 AM 或 PM 字段時(shí)捌显,還需提供 HH 字段。
  3. QQ 只能單獨(dú)使用或與年份標(biāo)識(shí)符一起使用总寒。

參考鏈接
MatLab函數(shù)
MatLab函數(shù)之datetime
MatLab函數(shù)之convertto
MatLab函數(shù)之yyyymmdd
MatLab函數(shù)之posixtime

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扶歪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子摄闸,更是在濱河造成了極大的恐慌善镰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件年枕,死亡現(xiàn)場(chǎng)離奇詭異炫欺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)熏兄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門品洛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摩桶,你說我怎么就攤上這事桥状。” “怎么了硝清?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵辅斟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我耍缴,道長(zhǎng)砾肺,這世上最難降的妖魔是什么挽霉? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任防嗡,我火速辦了婚禮艘希,結(jié)果婚禮上凛虽,老公的妹妹穿的比我還像新娘。我一直安慰自己泄鹏,他們只是感情好实胸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布他嫡。 她就那樣靜靜地躺著,像睡著了一般庐完。 火紅的嫁衣襯著肌膚如雪钢属。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天门躯,我揣著相機(jī)與錄音淆党,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛染乌,可吹牛的內(nèi)容都是我干的山孔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼荷憋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼台颠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起勒庄,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤串前,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后实蔽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酪呻,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年盐须,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玩荠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贼邓,死狀恐怖阶冈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情塑径,我是刑警寧澤女坑,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站统舀,受9級(jí)特大地震影響匆骗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜誉简,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一碉就、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闷串,春花似錦瓮钥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肋拔,卻和暖如春锈津,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凉蜂。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工琼梆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留七咧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓叮叹,卻偏偏與公主長(zhǎng)得像艾栋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蛉顽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容