python - 日付だけ - 日時文字列からの時間の削除



python timedelta 文字列 (4)

datetimeオブジェクトにはreplace()メソッドがあります。 これはタイムゾーンを保存します

>>> from django.utils import timezone
>>> now = timezone.now()
>>> now
datetime.datetime(2018, 8, 30, 14, 15, 43, 726252, tzinfo=<UTC>)
>>> now.replace(hour=0, minute=0, second=0, microsecond=0)
datetime.datetime(2018, 8, 30, 0, 0, tzinfo=<UTC>)

https://src-bin.com

私は日付文字列を持っていて、それを日付タイプに変換したい:

私はdatetime.datetime.strptimeを私が望むフォーマットで使用しようとしましたが、変換の時間を返しています。

    when = alldates[int(daypos[0])]
    print when, type(when)

    then = datetime.datetime.strptime(when, '%Y-%m-%d')
    print then, type(then)

これは出力が返すものです:

   2013-05-07 <type 'str'>
   2013-05-07 00:00:00 <type 'datetime.datetime'>

私は時間を削除する必要があります:00:00:00。


Answer #1

文字列を日付に変換するには、AFAIKという最も簡単な方法はdateutilモジュールです:

import dateutil.parser
datetime_object = dateutil.parser.parse("2013-05-07")

また、タイムゾーンも処理できます。

print(dateutil.parser.parse("2013-05-07"))
>>> datetime.datetime(2013, 5, 7, 1, 12, 12, tzinfo=tzutc())

datetimeオブジェクトがある場合は、次のように記述します。

import pytz
import datetime
now = datetime.datetime.now(pytz.UTC)

時間の部分を切り落としたければ、時間の部分を引くのではなく、新しいオブジェクトを作成する方が簡単だと思います。 それはより短く、より弾丸的な証拠です:

date_part datetime.datetime(now.year, now.month, now.day, tzinfo=now.tzinfo)

また、タイムゾーン情報を保持し、タイムデンタの減算よりも読みやすく理解しやすく、同じ手順で別のタイムゾーンを指定することもできます(これは、時間のない部分があるので意味があります) 。


Answer #2
>>> print then.date(), type(then.date())
2013-05-07 <type 'datetime.date'>

Answer #3
print then.date()

必要なものはdatetime.dateオブジェクトです。 あなたはdatetime.datetimeオブジェクトを持っています。 上記のように印刷するときにオブジェクトを変更するか、オブジェクトを作成するときに以下を実行することができます。

then = datetime.datetime.strptime(when, '%Y-%m-%d').date()




strptime