Googleシートにデータをフェッチしています。日付列には、次のテキスト文字列パターンを持つ複数のセルが含まれています。
Mon Mar 11 19:05:32 +0000 2019
パターンは常に繰り返されます:
[day] [month] [date] [HH:mm:ss] [Time Zone offset] [YYYY]
このテキスト文字列パターンは、数式を使用して日付/時刻値に変換できますか?
理想的には、上のテキスト文字列で表されている日付/時刻の値を日付と時刻の2つの列に分割したいと思います。
date | time
DD/MM/YYYY | HH:mm:ss
={DATE(RIGHT(A1, 4), MONTH(MID(A1, 5, 3)&1), REGEXEXTRACT(A1, "\d+")),
TEXT(INDEX(SPLIT(A1, " "), 1, 4), "hh:mm:ss")}
アカウントのタイムゾーン:
={DATE(RIGHT(A1, 4), MONTH(MID(A1, 5, 3)&1), REGEXEXTRACT(A1, "\d+")),
TEXT(INDEX(SPLIT(A1, " "), 1, 4)+IFERROR(
TIMEVALUE(JOIN(":", SPLIT(REGEXREPLACE(REGEXEXTRACT(A1, "\+(\d+)"),
"(.{2})", "/$1"),"/"))),
TIMEVALUE(JOIN(":0", SPLIT(REGEXREPLACE(REGEXEXTRACT(A1, "\+(\d+)"),
"(.{2})", "/$1"),"/")))), "hh:mm:ss")}
短い答えはイエスですが、カスタム関数を使用する方が便利だと思います。
Googleスプレッドシートでは、日付をシリアル番号として扱います。タイムゾーンは、スプレッドシートのタイムゾーン設定に基づいています。残念ながら、質問に直接表示されるテキストに直接変換する組み込みのスプレッドシート関数はありません。数式では、パーツを抽出し、スプレッドシートのタイムゾーン設定を考慮してタイムゾーンオフセットを適用する必要があります。
組み込み関数ベースのソリューションの推奨アルゴリズム:
タイムゾーン設定を自動的に取得する場合は、Google Appsスクリプトクラススプレッドシートメソッド getSpreadsheetTimeZone() を使用して、返されたスクリプトをタイムゾーンオフセット値に変換する必要があります。これは、タイムゾーンのオフセットを考慮したJavaScript処理の日時を考慮した場合、結果が複雑になります。
文字列はスペースで区切られているため、 [〜#〜] split [〜#〜] を使用して切り取り、必要な部分を [〜#〜 ] index [〜#〜] 。
月はWordであるため、少し強制する必要があるので、 [〜#〜] month [〜#〜] 関数にその月の日付1を尋ねることをお勧めします。st、ただしその月の月番号のみ。たとえば、文字列 "Mar1"を日付に変換して、その月を出力できます。 3。
次に、宛先セルを日付としてフォーマットし、適切な入力を [〜#〜] date [〜#〜] 関数に送信します。例えば:=DATE(INDEX(SPLIT(A1," "),1,6),MONTH(INDEX(SPLIT(A1," "),1,2)&1),INDEX(SPLIT(A1," "),1,3))
同じ行に沿って、時間の宛先セルが文字列の時間部分を抽出する時間としてフォーマットされていることを簡単に確認できます。=INDEX(SPLIT(A1," "),1,4)
私の執筆時点では、あなたの質問はタイムゾーンのオフセットを扱っていません。どのようなソリューションでも、オフセットの影響に基づいて、出力時間および時々日付を変更する必要がある場合があります。