Skip to content

Instantly share code, notes, and snippets.

@shibukawa shibukawa/parse_date.rst
Last active Mar 3, 2017

Embed
What would you like to do?
いけてる日付パース関数の仕様

日付パース関数仕様

参考コード

agoによる相対時間指定

  • 2 seconds ago
  • 3 minutes ago
  • 4 hours ago
  • 5 days ago
  • 1 week ago
  • 2 months ago
  • 1 year, 3 months ago
  • 1.year.4.months.ago
  • 2.years.ago

単語の区切りはスペースでも、ピリオドでも良い。数値+単位の区切り(上記の1 yearと3 months)の区切りはカンマ+スペースでも良い。現在の時間からの比較で、時間を取得する。

複数形だとsが後ろに付く。

相対日付

  • now
  • today
  • yesterday
  • last friday

日付だけ指定された時は、nowとtodayは同じ。時・分・秒はnowの値が補完されて設定される。

相対日付+時間

  • noon yesterday
  • tea yesterday
  • midnight today
  • 3pm today
  • 2am last friday
  • 19:00 yesterday
  • 10am

相対日付+時間。この場合は分・秒は指定されなければ00:00になる。todayなどの日付の相対指定がひとつも指定されなければ、todayが指定されたものとする(最後の項目)

絶対日時

  • August 6th
  • 06/05/2009
  • 06.05.2009
  • Feb 28, 4AM
  • 2AM Jun 4
  • 6AM, June 7, 2009
  • 2008-12-01

年が省略されたら今年の年が補完される。時/分/秒がすべて省略されたら、nowの値が補完される。時が設定されて分・秒が省略されたら、00:00が、時・分が設定されて秒が省略されたら00が補完される

並びは月→日、月→日→時間、時間→月→日、月→日→年、年→月→日、時間→月→日→年、年→月→日→時間を許容する

書く項目の区切りは、スペース、スラッシュ、ピリオド、ハイフン、カンマ+スペースが使える

月を英語表記するときは短い名前でも長い名前でも良い

月・日が一桁のときは先頭に0を書いても良いし、書かなくても良い。

以下のパターンはエラーにする

  • 2015 (年だけ)
  • 2014-08 (年月だけ)

タイムゾーンつきの日時

有効なもの

  • 2012-01-04 20:30:45 -05:00
  • 2012-01-04 20:30:45 -05
  • 2013-02-04 20:30:45 +1100

無効なもの

  • 2014-04-03 20:30:45 -:30
  • 2014-04-03 20:30:45 -05:
  • 2014-04-03 20:30:45 5

タイムゾーンは符号+4桁(区切りのコロンは任意)で省略時は今いるローカルなタイムゾーンが設定されたものとする。省略形で、符号+二桁もあり。

ゼロのときは+0000にする。無効なタイムゾーンも+0000にする

@michilu

This comment has been minimized.

Copy link

commented Jul 19, 2015

実生活だと西暦年が2桁の表記(DD-MM-YY)も割と見かけます。

@michilu

This comment has been minimized.

Copy link

commented Jul 19, 2015

a few seconds ago
a minute ago
an hour ago
a month ago
a year ago
も、よくあります。

@ymotongpoo

This comment has been minimized.

Copy link

commented Jul 19, 2015

とりあえずgitで使われてるやつをサポートするところから

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.