ホームページ >バックエンド開発 >Python チュートリアル >Python の dateutil モジュールを理解する (例付き)

Python の dateutil モジュールを理解する (例付き)

不言
不言転載
2018-12-04 17:30:466290ブラウズ

この記事では、Python の dateutil モジュールについて理解することができます (例とともに)。これには特定の参考値があります。必要な友人は参照できます。お役に立てば幸いです。help 。

最近、プロジェクト チームで Python プロジェクトに携わったところ、すべての形式で iso8601 が使用されていることがわかりました。同僚は、これはプロジェクトの国際化のためだと婉曲的に言いました (実際には、この番号はユーザーの数はせいぜい数百人です)まあ、彼らはすべて社内に集中していますが、国際化はどこから来るのでしょうか、ははは!)。そこで、時刻形式について詳しく調査することにし、Python の dateutil モジュールを発見しました。

DATETIME を ISO8601 形式に変換するには、isoformat() メソッドを使用するだけです。

now_time = datetime.now().isoformat()

出力は

2018-12-04T08:44:35.792445
  • DATETIME を解析します。文字列形式 (dateutil モジュールなし)

now_date_str = datetime.now().isoformat().split('.')[0]
my_format = '%Y-%m-%dT%H:%M:%S'
print(datetime.strptime(now_date_str, my_format))

これは、Python で文字列を時刻形式に変換するために最も一般的に使用されるメソッドです。出力結果は

2018-12-04 08:44:35
    # です。
  • ##dateutil を使用して文字列を解析する

from dateutil.parser import parse
timestamp = parse(now_date_str, fuzzy=True)
print(timestamp)
出力結果は上記と同じですが、この解析メソッドのあいまいさは素晴らしく、時間形式とあいまい一致できます。興味があれば、ソースコードをチェックしてみてください。

  • 時差の計算

today = date.today()
my_birthday = date(year=1992, month=3, day=17)
print('我已经出生' + str((today - my_birthday).days) + '天')
私が生まれてからの日数を直接計算でき、出力は

我已经出生9758天
# です。 ##しかし、私が望むなら、私が何歳か、つまり私が生まれてから何年かを計算するとどうなりますか?
Traceback (most recent call last):
2018-12-04 08:57:08
  File "F:/pythonProject/testcode/testDate.py", line 27, in <module>
    print((today-my_birthday).years)
2018-12-04 08:57:08
AttributeError: 'datetime.timedelta' object has no attribute 'years'

残念ながら、timedelta には年と月を取得する方法がないため、エラーが報告されました。そのため、引き続き dateutil モジュールを使用します。

from dateutil.relativedelta import relativedelta
diff = relativedelta(today, my_birthday)

出力から次のことがわかります。 2 つの日付の中間を取得できます年、月、日の違い

relativedelta(years=+26, months=+8, days=+17)
print(diff.years)
print(diff.months)
print(diff.days)
26
8
17

    日付のリストを取得します。連続 5 週間の火曜日の日付を取得する必要がある場合は、次のようになります。 dateutil を使用すると簡単に実現できます
  • from dateutil.rrule import rrule, WEEKLY
    pp(list(rrule(WEEKLY, count=10, dtstart=next_tuesday)))
  • 出力は
[datetime.datetime(2018, 12, 4, 8, 59, 6),
 datetime.datetime(2018, 12, 11, 8, 59, 6),
 datetime.datetime(2018, 12, 18, 8, 59, 6),
 datetime.datetime(2018, 12, 25, 8, 59, 6),
 datetime.datetime(2019, 1, 1, 8, 59, 6),
 datetime.datetime(2019, 1, 8, 8, 59, 6),
 datetime.datetime(2019, 1, 15, 8, 59, 6),
 datetime.datetime(2019, 1, 22, 8, 59, 6),
 datetime.datetime(2019, 1, 29, 8, 59, 6),
 datetime.datetime(2019, 2, 5, 8, 59, 6)]

です注: dtstart は時間形式である必要があります

以上がPython の dateutil モジュールを理解する (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。