web-dev-qa-db-ja.com

PythonのYYYY-MM-DDで今日の日付を取得する?

私が使っている:

str(datetime.datetime.today()).split()[0]

今日の日付をYYYY-MM-DD形式で返す。

これを達成するためのより粗雑な方法はありますか?

180
Pyderman

strftime を使用できます。

from datetime import datetime

datetime.today().strftime('%Y-%m-%d')
327
diegueus9

一般に認められている答えよりももっと簡単な方法があります。 Python 2と3の両方に有効です。

from datetime import date
today = str(date.today())
print(today)   # '2017-12-26'
63
kmonsoor

あなたが面白いコードを覚えているのが好きならDateTimeはちょうど素敵です。あなたは単純さを好みませんか?

>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'

このモジュールはあなたが mean を理解するのに十分賢いです。

pip install arrowを実行するだけです。

33
Bill Bell

私はいつもisoformat()関数を使います。

from datetime import date    
today = date.today().isoformat()
print(today) # '2018-12-05'

標準形式の時刻が必要な場合は、これもdatetimeオブジェクトで機能します。

from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
15
JdH

他の回答はpythonのdatetime.datetimeの使用を提案します、しかし@Bill Bellが言ったように、サービスとしてまたはより大きなAPIのエコシステムの一部としてより単純なdatetimeインターフェースを提供する他のライブラリがあります。これがdatetimesを扱うのをとても簡単にする2つのそのようなライブラリです。

PANDAS

pandas ライブラリから pd.to_datetime を使用できます。あなたが何を返したいかに応じて、さまざまなオプションがあります。

import pandas as pd

pd.to_datetime('today')  # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')

Python datetime オブジェクトとして、

pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)

フォーマットされた日付文字列として、

pd.to_datetime('today').isoformat()
# '2019-04-18T04:03:32.493337'

# Or, `strftime` for custom formats.
pd.to_datetime('today').strftime('%Y-%m-%d')
# '2019-03-27'

タイムスタンプから日付だけを取得するには、Timestamp.dateを呼び出します。

pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)

to_datetime以外に、 Timestamp オブジェクトを直接インスタンス化することができます。

pd.Timestamp('today')  # pd.Timestamp('now')
# Timestamp('2019-04-18 03:43:33.233093')

pd.Timestamp('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 53, 46, 220068)

タイムスタンプをタイムゾーンに対応させる場合は、タイムゾーンをtz引数に渡します。

pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')

振り子

振り子 を使って作業しているなら、いくつかの興味深い選択があります。現在のタイムスタンプはnow()を使って、または今日の日付をtoday()を使って取得できます。

import pendulum 

pendulum.now()
# DateTime(2019, 3, 27, 0, 2, 41, 452264, tzinfo=Timezone('America/Los_Angeles'))

pendulum.today()
# DateTime(2019, 3, 27, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

さらに、追加のtimedelta演算を行わなくても、tomorrow()またはyesterday()の日付を直接取得することもできます。

pendulum.yesterday()
# DateTime(2019, 3, 26, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

pendulum.tomorrow()
# DateTime(2019, 3, 28, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

利用可能なさまざまなフォーマットオプションがあります。

pendulum.now().to_date_string()
# '2019-03-27'

pendulum.now().to_formatted_date_string()
# 'Mar 27, 2019'

pendulum.now().to_day_datetime_string()
# 'Wed, Mar 27, 2019 12:04 AM'
2
cs95

これは、Pythonで日付を取得する最も簡単な方法です。

from datetime import date
todayDate = date.today()
print(todayDate) #prints today's date for eg. 2019-07-09

パッケージをインストールする必要さえありません。これらはすべてpythonに既に組み込まれています。

1
Kaarthikeyan

datetimeをインポートしてからコマンドから「datetime.」を削除すると、受け入れられた答えを機能させることができました。これが私にとってうまくいったことです(python 3.6):

from datetime import datetime

date = datetime.today().strftime('%Y-%m-%d')
1
Karl Baker

これは簡単ですが、どういうわけか非効率的でバグがあるので、私はこれを好みます。 strong error-proofプログラムが必要な場合は、Shellコマンドの終了コードを確認する必要があります。

os.system('date +%Y-%m-%d')
0
plhn