ISO-8601 String to Date in Google Sheets cell

DatetimeGoogle SheetsGoogle Sheets-FormulaIso8601

Datetime Problem Overview


I have a bunch of ISO-8601 formatted strings in a column of my sheet. How can I get google sheets to treat them as Dates so I can do math on them (difference in minutes between two cells, for example)? I tried just =Date("2015-05-27T01:15:00.000Z") but no-joy. There has to be an easy way to do this. Any advice?

Datetime Solutions


Solution 1 - Datetime

To get an actual Date value which you can format using normal number formatting...

=DATEVALUE(MID(A1,1,10)) + TIMEVALUE(MID(A1,12,8))

eg.

A B
1 2016-02-22T05:03:21Z 2/22/16 5:03:21 AM
  • Assumes timestamps are in UTC
  • Ignores milliseconds (though you could add easily enough)

The DATEVALUE() function turns a formatted date string into a value, and TIMEVALUE() does the same for times. In most spreadsheets dates & times are represented by a number where the integer part is days since 1 Jan 1900 and the decimal part is the time as a fraction of the day. For example, 11 June 2009 17:30 is about 39975.72917.

The above formula parses the date part and the time part separately, then adds them together.

Solution 2 - Datetime

I found it much simpler to use =SUM(SPLIT(A2,"TZ"))

Format yyyy-MM-dd HH:mm:ss.000 to see the date value as ISO-8601 again.

Solution 3 - Datetime

Try this

=CONCATENATE(TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),1),"yyyy-mm-dd")," ",TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),2),"hh:mm:ss"))

Where A1 can be a cell with ISO-8601 formatted string or the string itself.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBob KuharView Question on Stackoverflow
Solution 1 - DatetimercoupView Answer on Stackoverflow
Solution 2 - DatetimeChris BandyView Answer on Stackoverflow
Solution 3 - DatetimeAkshin JalilovView Answer on Stackoverflow