簡體   English   中英

使用matlab將yyyy-mm-dd hh:mm:ss.ms轉換為yyyy-mm-dd hh:mm:ss

[英]converting yyyy-mm-dd hh:mm:ss.ms to yyyy-mm-dd hh:mm:ss using matlab

我收到時間戳數據集,格式為yyyy-mm-dd HH:MM:SS.ms 我想轉換成yyyy-mm-dd HH:MM:SS格式。 有沒有辦法只使用matlab選擇這種格式?

例如:

2012-08-01 00:10:00.0

應該:

2012-08-01 00:10:00

請注意,毫秒值均為零。

一般的方法是使用datestr將其轉換為您想要的格式。

dates = {'2012-08-01 00:10:00.1';
         '2012-08-01 00:10:00.1'};

new = datestr(dates, 'yyyy-mm-dd HH:MM:SS');
%   2012-08-01 00:10:00
%   2012-08-01 00:10:00

另一種方法是,因為所有的毫秒都將為零(因此您不必擔心舍入),您可以使用正則表達式來刪除毫秒組件(小數點后的任何內容)

new = regexprep(dates, '\..*', '')

這可能會更高效,因為您不需要執行轉換為datetime對象或日期編號的中間步驟。

由於輸入和輸出格式除了毫秒之外是相同的,因此不要使用日期函數,而是使用簡單的字符串操作:

% example dates
C = {'2012-08-01 00:10:00.0'
     '2013-08-02 00:11:11.0'
     '2014-08-03 00:12:22.0'
     '2015-08-04 00:13:33.0'
     '2016-08-05 00:14:44.0'};

% method 1
D = cellfun(@(x)x(1:end-2), C, 'UniformOutput', false);

% method 2 (same, but no cellfun)
D = char(C);
D = cellstr(D(:,1:end-2));

% method 3
D = regexp(C, '[^\.]*', 'match', 'once');

% method 4
D = regexprep(C, '\..*$', '');

讓我們說你在datetime對象中需要這些數據然后我會做這樣的事情:

inp = {'2012-08-01 00:10:00.0'; '2012-08-02 04:10:00.0'}; % Some datestrins
t = datetime(inp,'InputFormat','yyyy-MM-dd HH:mm:ss.0'); % Convert to datetimes
datestr(t, 'yyyy-mm-dd HH:MM:SS') % convert back to strings

有關輸入輸出格式化程序,請參閱文檔。 我假設最后一部分總是零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM