web-dev-qa-db-ja.com

テキスト文字列を日付/時刻値に変換

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
3
Elad Ratson
={DATE(RIGHT(A1, 4), MONTH(MID(A1, 5, 3)&1), REGEXEXTRACT(A1, "\d+")),
  TEXT(INDEX(SPLIT(A1, " "), 1, 4), "hh:mm:ss")}

0

アカウントのタイムゾーン:

={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")}

0

3
user0

短い答えはイエスですが、カスタム関数を使用する方が便利だと思います。

Googleスプレッドシートでは、日付をシリアル番号として扱います。タイムゾーンは、スプレッドシートのタイムゾーン設定に基づいています。残念ながら、質問に直接表示されるテキストに直接変換する組み込みのスプレッドシート関数はありません。数式では、パーツを抽出し、スプレッドシートのタイムゾーン設定を考慮してタイムゾーンオフセットを適用する必要があります。

組み込み関数ベースのソリューションの推奨アルゴリズム:

  1. スプレッドシートの設定を見て、タイムゾーンの設定で1つのセルにタイムゾーンのオフセットを書き込みます。
  2. 日付からタイムゾーンoffeetを削除し、残りの日時パーツを並べ替えて、テキスト値として [〜#〜] datevalue [〜#〜] サポートされる日時を作成します。
  3. 必要なタイムゾーンオフセットを適用します。
  4. セル番号のフォーマットオプションを使用して最初に日付を表​​示し、2番目に時刻を表示するために、結果の値を日付の1つのセルと時間の別のセルに追加します。

タイムゾーン設定を自動的に取得する場合は、Google Appsスクリプトクラススプレッドシートメソッド getSpreadsheetTimeZone() を使用して、返されたスクリプトをタイムゾーンオフセット値に変換する必要があります。これは、タイムゾーンのオフセットを考慮したJavaScript処理の日時を考慮した場合、結果が複雑になります。

1
Rubén

文字列はスペースで区切られているため、 [〜#〜] 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)

私の執筆時点では、あなたの質問はタイムゾーンのオフセットを扱っていません。どのようなソリューションでも、オフセットの影響に基づいて、出力時間および時々日付を変更する必要がある場合があります。

1
Joel Reid