1-hour offset in time string conversion

조회 수: 13 (최근 30일)
Dennis
Dennis 2014년 10월 24일
답변: Dennis 2014년 11월 3일
Hi there, I'm having trouble in converting string to datenum values. Somehow, there will be an offset of one hour when converting back to datestr. So, here is my example:
>> timestr = '1986-03-13T11:59:58.000Z';
>> test = datenum(timestr,'yyyy-mm-ddTHH:MM:SS.000Z')
test =
7.2544e+05
>> datestr(test,'yyyy-mm-ddTHH:MM:SS')
ans =
1986-03-13T12:59:58
To me, this seems pretty weird. I might be missing something very simple, though. I'd be glad if any of you could help me! Thanks
Dennis
  댓글 수: 1
Star Strider
Star Strider 2014년 10월 24일
I suggest you report this as a bug, specifically because in R2014b I get an even weirder result from running your code:
1986-03-13T04:59:58
a -19 hour error!

댓글을 달려면 로그인하십시오.

채택된 답변

Peter Perkins
Peter Perkins 2014년 10월 31일
Dennis, I'm guessing you're somewhere in Europe, and that Star Strider is somewhere in the western US. As in, UTC+1 and UTC-7.
Reason is, the Z in your string is being treated as "Zulu", i.e., UTC, and the datenum is converted to your local time zone. Z has never (far as I know) been documented as something you could put in a date format for datestr. Prior to R2013a, this threw an error.
I'm not sure what you need to do with a date string like this. You may simply want to ignore the Z and preserve the time stamp itself. If they all have a trailing 'Z', I recommend just stripping that off.
If you have access to R2014b, you might consider using the new date and time features. For example:
>> timestr = '1986-03-13T11:59:58.000Z'
timestr =
1986-03-13T11:59:58.000Z
>> datetime(timestr,'Format','yyyy-MM-dd''T''HH:mm:ss.SSSXXX','TimeZone','UTC')
ans =
1986-03-13T11:59:58.000Z
>> datetime(timestr,'Format','yyyy-MM-dd''T''HH:mm:ss.SSSXXX','TimeZone','Europe/Paris')
ans =
1986-03-13T12:59:58.000+01:00
>> datetime(timestr,'Format','yyyy-MM-dd''T''HH:mm:ss.SSS''Z''')
ans =
1986-03-13T11:59:58.000Z
Hope this helps.

추가 답변 (1개)

Dennis
Dennis 2014년 11월 3일
I have not thought about this, stupid me... Anyways, the easiest fix for me will then be to simply omit the 'Z' from the format string! Thanks a lot!

카테고리

Help CenterFile Exchange에서 Dates and Time에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by