matlab 數值型日期的轉換

2021-09-11 08:35:39 字數 1053 閱讀 2324

我們在用 matlab 做計算時總是難免要對時間進行處理。可能有些人喜歡用 數字去表示時間,比如 20180910 這樣的表示方法。當我們讀取到這樣的時間資料時該如何轉換為 matlab 中的時間呢?

通過大家會想到以下的做法,把 20180910 中的年、月、日分別提取出來,像matlab中用datevec對時間進行分解一樣,然後進行重組就 ok 了。這種方法的**如下:

close all

clear

clc% 方法一

daten = 20180910;

y = floor(daten/10000);

m = floor((daten - y*10000) / 100);

d = daten - y*10000 - m*100;

t1 = datetime(y,m,d);

這種方法的確可行,但是未免麻煩用了這麼多行**,在 matlab 中難道沒有簡潔的做法嗎?當然是有的,datetime函式奧妙無窮,我們可以這樣做:

close all

clear

clcdaten = 20180910;

% 方法二

t2 = datetime(daten,'convertfrom','yyyymmdd');

t3 = datetime(daten,'convertfrom','yyyymmdd','format','yyyy-mm-dd');

方法二只用一行**就實現了相同功能,至於 t2 和 t3 的差別,就在於乙個是預設的datetime格式,另乙個則使用了format進行指定。

一但我們將資料轉換成了datetime格式,那麼轉換成 matlab 中的其他時間資料格式,datestrdatenum之類就輕而易舉了。

當然,這邊還需要提醒一點,這裡輸入的 daten 是數值型,請確保資料輸入是數值型,否則會出錯,我之前經常在這點上犯錯。

如果還有更好的方法,請不吝賜教。

double數值與日期型之間的相互轉換

double數值與日期型之間的相互轉換 double數值與日期型之間的相互轉換 在c 中,數值型與日期型是可以相互轉的 一 從double型到date datetime.fromoadate double型 fromoadate 方法的日期零點值為1899年12月30日0點0分0秒0毫秒,順逆推為加...

(C )數值型貨幣的大寫轉換

本人現在做的專案要求對數值型貨幣,轉換成大寫,在網上搜尋了半天,沒有找到c 寫的型別,不得不自己寫了,測試了,還能滿足要求,只是演算法有點繁瑣,有哪位大蝦再給改改!下面就是我得 using system using system.drawing using system.collections us...

sql中日期型轉換

sql日期轉換 select convert varchar,getdate 120 2004 09 12 11 06 08 select replace replace replace convert varchar,getdate 120 20040912110608 select conver...