web-dev-qa-db-ja.com

GoogleスプレッドシートセルのISO-8601文字列の日付

シートの列にISO-8601形式の文字列がたくさんあります。グーグルシートを取得して日付として扱うことができるようにするにはどうすればそれらを計算できますか?私は=Date("2015-05-27T01:15:00.000Z")だけを試しましたが、喜びはありませんでした。これを行う簡単な方法が必要です。何かアドバイス?

41
Bob Kuhar

通常の数値書式設定を使用して書式設定できる実際の日付値を取得するには...

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

例えば。

_╔═══╦══════════════════════╦════════════════════╗
║   ║          A           ║          B         ║
╠═══╬══════════════════════╬════════════════════╣
║ 1 ║ 2016-02-22T05:03:21Z ║ 2/22/16 5:03:21 AM ║
╚═══╩══════════════════════╩════════════════════╝
_
  • タイムスタンプがUTCであると仮定します
  • ミリ秒を無視します(ただし、簡単に追加できます)

DATEVALUE() 関数は、フォーマットされた日付文字列を値に変換し、 TIMEVALUE() は時間に対して同じことを行います。ほとんどのスプレッドシートでは、日付と時刻は数値で表され、整数部分は1900年1月1日からの日数であり、小数部分は日の一部としての時刻です。たとえば、2009年6月11日17:30は約39975.72917です。

上記の式は、日付部分と時間部分を別々に解析し、それらを一緒に追加します。

60
rcoup

これを試して

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

A1は、ISO-8601形式の文字列または文字列自体のセルです。

16
Akshin Jalilov

=SUM(SPLIT(A2,"TZ"))を使用する方がはるかに簡単だとわかりました

フォーマット yyyy-MM-dd HH:mm:ss.000日付値をISO-8601として再度表示するには。

15
Chris Bandy