フィルターのクリア

Date Conversion

2 ビュー (過去 30 日間)
Syed Abbas
Syed Abbas 2011 年 12 月 19 日
Hi,
I have a <200x1 cell> array which consists of dates read through a text file. The dates are in the format yyyy/mm/dd hh:mm:ss:fff. I want to convert these dates into a matlab recognizable date vector which could then be later used in creating time series objects. I am not sure how to do this.
Thanks,
  2 件のコメント
Jan
Jan 2011 年 12 月 19 日
Are you sure about the colon before the fractional seconds? Usually there is a dot.
Syed Abbas
Syed Abbas 2011 年 12 月 19 日
Oh, that works now! I mistook the colun for the dot. Thansk a lot for ponting that out.

サインインしてコメントする。

採用された回答

Fangjun Jiang
Fangjun Jiang 2011 年 12 月 19 日
datenum()
>> dates={'2011/11/11 11:11:11:111';'2012/12/12 12:12:12:121'}
datenum(dates,'yyyy/mm/dd HH:MM:SS:FFF')
dates =
'2011/11/11 11:11:11:111'
'2012/12/12 12:12:12:121'
ans =
1.0e+005 *
7.3482
7.3522
  9 件のコメント
Fangjun Jiang
Fangjun Jiang 2011 年 12 月 19 日
Change the last column symbol ":" in the format string to ".". Your data is different than you described in your question. Jan was right. It usually is HH:MM:SS.FFF, not HH:MM:SS:FFF
Fangjun Jiang
Fangjun Jiang 2011 年 12 月 19 日
Or you don't need to specify the format anymore since it is standard.
%%
Dates={'2011/12/15 09:00:00.039';'2011/12/15 09:00:00.039'};
datenum(Dates)

サインインしてコメントする。

その他の回答 (3 件)

Walter Roberson
Walter Roberson 2011 年 12 月 19 日
  4 件のコメント
Syed Abbas
Syed Abbas 2011 年 12 月 19 日
size shows 1 23 and class shows char
Syed Abbas
Syed Abbas 2011 年 12 月 19 日
I get the following error with cell fun:
Error using cellfun
Input #2 expected to be a cell array, was char instead.

サインインしてコメントする。


Jose Jeremias Caballero
Jose Jeremias Caballero 2011 年 12 月 19 日
Hello.
>> A={'2011/12/19 13:27:50.890';'2012/12/19 18:49:40.790'}
A =
'2011/12/19 13:27:50.890'
'2012/12/19 18:49:40.790'
>> vector=datevec(A, 'yyyy/mm/dd HH:MM:SS.FFF')
vector =
1.0e+003 *
2.0110 0.0120 0.0190 0.0130 0.0270 0.0509
2.0120 0.0120 0.0190 0.0180 0.0490 0.0408

Jan
Jan 2011 年 12 月 19 日
A less intelligent, but much faster method than DATENUM:
dates = {'2011/11/11 11:11:11.111'; ...
'2012/12/12 12:12:12.121'};
function Vector = myDateConversion(DateCell)
S = sprintf('%s ', DateCell{:});
D = sscanf(S, '%d/%d/%d %d:%d:%f');
Vector = transpose(reshape(D, 6, []));
On Matlab 2009a this is 5 times faster than datevec(dates, 'yyyy/mm/dd HH:MM:SS.FFF'), but datevec is much smarter and converts the '2011/32/12' correctly.
The date topic has been discussed in Mike's blog recently:

カテゴリ

Help Center および File ExchangeDates and Time についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by