Pythonで現在の時刻を取得する方法

2009年01月06日に質問されました。  ·  閲覧回数 3.5M回  ·  ソース

user46646 picture
2009年01月06日

現在の時刻を取得するために使用されるモジュール/メソッドは何ですか?

回答

Harley Holcombe picture
2009年01月06日
3229

使用する:

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2009-01-06 15:08:24.789150

そしてちょうどその時:

>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.now().time())
15:08:24.789150

詳細については、ドキュメントを参照し

入力を節約するために、 datetimeモジュールからdatetimeオブジェクトをインポートできます。

>>> from datetime import datetime

次に、上記のすべてから先頭のdatetime.を削除します。

Sean James picture
2009年01月06日
996

time.strftime()使用できます:

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
ParaMeterz picture
2013年01月09日
664
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

この例では、出力は次のようになります。 '2013-09-18 11:16:32'

これがstrftimeディレクティブのリストです。

Ray picture
2011年05月04日
470

ハーレーの答えに似ていますが、 str()関数を使用して、すばやく汚い、少し人間が読める形式にします。

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
Aaron Hall picture
2015年02月18日
396

Pythonで現在の時刻を取得するにはどうすればよいですか?

timeモジュール

timeモジュールは、「エポックからの秒数」で時間を示す関数やその他のユーティリティを提供します。

import time

Unixエポックタイム

これは、データベースに保存するためにタイムスタンプを取得する必要がある形式です。 これは、整数に変換できる単純な浮動小数点数です。 また、1970年1月1日00:00:00からの秒数を表すため、秒単位の算術演算にも適しています。これは、次に説明する他の時間表現と比較してメモリライトです。

>>> time.time()
1424233311.771502

このタイムスタンプはうるう秒を考慮していないため、線形ではありません。うるう秒は無視されます。 したがって、国際的なUTC標準と同等ではありませんが、近いため、ほとんどの記録管理の場合に非常に適しています。

ただし、これは人間のスケジューリングには理想的ではありません。 特定の時点で発生させたい将来のイベントがある場合は、datetimeオブジェクトまたはシリアル化されたdatetimeオブジェクトに解析できる文字列を使用してその時刻を格納する必要があります(これらについては後で説明します)。

time.ctime

また、オペレーティングシステムが好む方法で現在の時刻を表すこともできます(つまり、システム環境設定を変更すると変更される可能性があるため、他の人が期待しているように、これがすべてのシステムで標準であるとは限りません)。 。 これは通常、ユーザーフレンドリーですが、通常、時系列で並べ替えることができる文字列にはなりません。

>>> time.ctime()
'Tue Feb 17 23:21:56 2015'

ctime 、タイムスタンプを人間が読める形式にハイドレイトすることもできます。

>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'

この変換は記録管理にも適していません(人間だけが解析するテキストを除いて、光学式文字認識と人工知能が改善されているため、これらのケースの数は減ると思います)。

datetimeモジュール

datetimeモジュールもここで非常に役立ちます。

>>> import datetime

datetime.datetime.now

datetime.nowは、現在の時刻を返すクラスメソッドです。 タイムゾーン情報なしでtime.localtimeを使用します(指定されていない場合は、以下のタイムゾーン対応を参照してください)。 シェルにエコーされた表現(同等のオブジェクトを再作成できるようにする)がありますが、印刷(またはstr強制)されると、人間が読める形式(およびほぼISO)であり、辞書式順序は、時系列の並べ替えと同等です。

>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461

日時のutcnow

これを行うことにより、グローバル標準であるUTC時間で日時オブジェクトを取得できます。

>>> datetime.datetime.utcnow()
datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
>>> print(datetime.datetime.utcnow())
2015-02-18 04:53:31.783988

UTCは、GMTタイムゾーンとほぼ同等の時間標準です。 (GMTとUTCは夏時間では変更されませんが、ユーザーは夏時間中に英国夏時間などの他のタイムゾーンに切り替えることができます。)

日時タイムゾーン対応

ただし、これまでに作成した日時オブジェクトはどれも、さまざまなタイムゾーンに簡単に変換できません。 pytzモジュールでその問題を解決できます。

>>> import pytz
>>> then = datetime.datetime.now(pytz.utc)
>>> then
datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)

同様に、Python 3では、utc timezoneインスタンスがアタッチされたtimezoneクラスがあります。これにより、オブジェクトのタイムゾーンが認識されます(ただし、便利なpytzなしで別のタイムゾーンに変換できます)。モジュールは読者の練習問題として残されています):

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)

また、元のutcオブジェクトからタイムゾーンに簡単に変換できることがわかります。

>>> print(then)
2015-02-18 04:55:58.753949+00:00
>>> print(then.astimezone(pytz.timezone('US/Eastern')))
2015-02-17 23:55:58.753949-05:00

pytzタイムゾーンlocalizeメソッドを使用するか、tzinfo属性を( replaceに置き換えると、これは盲目的に行われます)、単純な日時オブジェクトを認識させることもできますが、これらはベストプラクティスよりも最後の手段:

>>> pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
>>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)

pytzモジュールを使用すると、 datetimeオブジェクトのタイムゾーンを認識し、 pytzモジュールで使用可能な数百のタイムゾーンに時間を変換できます。

このオブジェクトをUTC時間でシリアル化してデータベースに保存することもできますが、最初に示したUnixエポック時間を単に保存するよりもはるかに多くのメモリが必要になり、エラーが発生しやすくなります。

時間を表示する他の方法は、特に異なるタイムゾーンからのデータを処理する場合に、エラーが発生しやすくなります。 文字列またはシリアル化された日時オブジェクトがどのタイムゾーンを対象としていたかについて混乱が生じないようにする必要があります。

ユーザーのためにPythonで時間を表示している場合、 ctimeは、テーブルではなく(通常はうまくソートされません)、おそらく時計でうまく機能します。 ただし、Pythonで時間を処理する場合は、Unix時間、またはタイムゾーン対応のUTC datetimeオブジェクトを使用することを個人的にお勧めします。

maxp picture
2009年01月06日
137

行う

from time import time

t = time()
  • t -浮動小数点数。時間間隔の測定に適しています。

UnixプラットフォームとWindowsプラットフォームにはいくつかの違いがあります。

Vijay Dev picture
2009年01月06日
105
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

これにより、現在のGMTが指定された形式で出力されます。 localtime()メソッドもあります。

このページに詳細があります。

Ethereal picture
2013年10月31日
72

前の答えはすべて良い提案ですが、 ctime()を使用するのが最も簡単だと思います:

In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'

これにより、現在の現地時間の適切にフォーマットされた文字列表現が得られます。

nacholibre picture
2013年09月24日
64

最も簡単な方法は次のとおりです。

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
bluish picture
2010年12月27日
54

timeオブジェクトとして現在の時刻が必要な場合:

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)