String date and time identification
8 ビュー (過去 30 日間)
古いコメントを表示
Jorge Luis Paredes Estacio
2023 年 1 月 5 日
Hello, I have the following string:
date= '2021-07-011407404.5'
From here I would like to detect date and time in the following formar: 2021-07-01 14:07:40, the last number (e.g. 4.5) is another data and this number it can vary like 16.50, and so on.
Thank you for your support
0 件のコメント
採用された回答
Walter Roberson
2023 年 1 月 5 日
datetime() has no ability to have a format item along the lines of "arbitrary number to be ignored". You cannot specify anything along the lines of 'yyyy-MM-ddHHmmss%*f' with the intent being that after the ss field that an arbitrary floating point number is to be expected but discarded. It does not even have the ability to specify that a particular fixed numeric digit is to be expected but ignored
datetime('2021-07QA', 'InputFormat', "uuuu-MM'QA'") %works
datetime('2021-075A', 'InputFormat', "uuuu-MM'5A'") %nope
Because of this, you need to remove those extra digits from the input before you call datetime(), such as using indexing as shown by @Star Strider and @Cameron
0 件のコメント
その他の回答 (3 件)
Star Strider
2023 年 1 月 5 日
編集済み: Star Strider
2023 年 1 月 5 日
If they all have the same format —
date= '2021-07-011407404.5'
DT = datetime(date(1:16), 'InputFormat','yyyy-MM-ddHHmmss', 'Format','yyyy-MM-dd HH:mm:ss')
LastNumber = str2double(date(17:end))
They must all have the same formats for this to work.
EDIT — (5 Jan 2023 at 18:28)
Added 'Format' name-value pair to datetime call.
.
1 件のコメント
Stephen23
2023 年 1 月 5 日
An alternative to indexing would be to use EXTRACTBEFORE(), which also works on string/cell of char arrays.
Cameron
2023 年 1 月 5 日
編集済み: Cameron
2023 年 1 月 5 日
How consistent are is the information in your variable called date? Will they always look like what you have described in your question? You should consider renaming the variable from date to something that is not already a MATLAB function like DateValue.
DateValue = '2021-07-011407404.5';
NewDate = DateValue(1:10);
NewTime = [DateValue(11:12),':',DateValue(13:14),':',DateValue(15:16)];
RemainingInfo = str2double(DateValue(17:end));
%from here you can make them into formats MATLAB recognizes as datetime
DateTimeValue = datetime([NewDate,' ',NewTime]);
0 件のコメント
Sulaymon Eshkabilov
2023 年 1 月 5 日
Hi,
Here is one of the possible ways of displaying the time strings:
DD= '2021-07-011407404.5';
DDate = DD(1:10)
D2 = DD(11:16);
DTime = strcat([D2(1:2) ':' D2(3:4) ':' D2(5:6)])
D3 = DD(17:end);
DTime2 = strcat([D3(1) '.' D3(end)])
ALL = ['Date: ' DDate ' Time: ' DTime ' Seconds: ' DTime2]
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!