ISO-8601 String to Date in Google Sheets cell

前端 未结 3 1570
庸人自扰
庸人自扰 2020-12-24 11:46

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 bet

相关标签:
3条回答
  • 2020-12-24 12:17

    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.

    0 讨论(0)
  • 2020-12-24 12:23

    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.

    0 讨论(0)
  • 2020-12-24 12:23

    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.

    0 讨论(0)
提交回复
热议问题