📅

さまざまな形式の文字列から日付を作成するには

Status
Update by 2.0
属性名
文字列から日付(年月日)、文字列から日付(月日)
返り値
Date
逆引きNotionDB
関連するもの
いつもおなじみ Red Gregory さんの Formula 説明。文字列から日付を作成するという素晴らしいアイディアでした。Red さんのは文字列を切り出しているのですが、これだとフォーマットに縛りがあります。日本人向けに「Y年M月D日」、「Y-M-D」、「Y/M/D」のフォーマットのどれでも対応する汎用性のあるものを作ってみました。ついでに、「月日」だけのものも作りました。ただし、こちらはあくまで相対日付なので、年が変わると違う日付になるので注意してください。
  1. 数値が二つまたは三つ存在するものならどんな表記でも可能。Formula 2.0 の match, parseDate を使いました。
    1. lets( /* numbers 変数: 数字だけを取り出した配列 */ numbers, /* 年月日 の数値を取り出し */ prop("Name").match("\d+") /* 文字列の配列を数値の配列に変更 */ .map(current.toNumber()), /* ymd 変数, [年, 月, 日]の配列、年がなければ今年の年を追加 */ ymd, /* 配列の長さが2の場合、先頭に今年を追加 */ numbers.length() == 2 ? [today().year(), numbers].flat() : numbers, /* y を 10000 倍、 m を 100、d はそのままに。*/ /* 例 [2023, 9, 10] -> [20230000, 900, 10] */ ymd.map(current * 100^(2-index)) /* それらを加算。 例 [20230000, 900, 10] -> 20230910 */ .sum() /* 日付に変換 */ .parseDate() )
Name
文字列から日付
Sep 19, 2024 11:33 AM
Sep 19, 2024 11:33 AM
Sep 19, 2024 11:33 AM
Sep 19, 2024 11:33 AM
Sep 19, 2024 11:33 AM
Sep 19, 2024 11:33 AM
P.S. 田原さんに数値のままでも parseDate が動くことを教えてもらいました。上の formula は sum() の後に文字列に変換する .format() を入れていたのですが、なくても動くようなので消してしまいました。基本形式だと日付までは数値だけで表現できるので、たくさん応用が効きそうですね。