3488

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

4

49 に答える 49

3582

使用する:

>>> 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.次に、上記のすべてから先頭を削除します。

于 2009-01-06T04:57:05.317 に答える
1105

使用できますtime.strftime()

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
于 2009-01-06T04:59:52.503 に答える
770
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

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

strftimeディレクティブのリストは次のとおりです。

于 2013-01-09T05:50:34.103 に答える
506

Harley's answerに似ていますが、この関数を使用しstr()て、クイック アンド ダーティで、人間が読みやすい形式を使用します。

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
于 2011-05-04T00:56:29.527 に答える
477

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.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 は夏時間では変更されませんが、ユーザーは夏の間、英国夏時間などの他のタイムゾーンに切り替えることができます。)

datetime タイムゾーン対応

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

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

同様に、Python 3 にはtimezoneutctimezoneインスタンスがアタッチされたクラスがあり、これによりオブジェクトのタイムゾーンも認識されます (ただし、便利な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

pytztimezonelocalizeメソッドを使用して、または tzinfo 属性を置き換えることによって (これはやみくもに行われます) 、ナイーブな datetime オブジェクトを認識させることもできます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 時刻またはタイムゾーン対応の UTCdatetimeオブジェクトを使用することを個人的にお勧めします。

于 2015-02-18T05:08:34.953 に答える
117
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

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

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

于 2009-01-06T05:02:43.417 に答える
78

最も速い方法は次のとおりです。

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
于 2013-09-24T11:21:10.047 に答える
65

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

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
于 2010-12-27T10:24:12.343 に答える
48

.isoformat()ドキュメントにはありますが、まだここにはありません(これは@Ray Vegaの回答に非常に似ています):

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
于 2013-06-25T00:38:25.233 に答える
46

アメリカ海軍の公式タイムキーパーであるUS Naval Observatoryに聞いてみませんか?

import requests
from lxml import html

page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
tree = html.fromstring(page.content)
print(tree.xpath('//html//body//h3//pre/text()')[1])

(私のように) DC エリアに住んでいる場合、遅延はそれほど悪くないかもしれません...

于 2016-08-19T19:45:08.020 に答える
32

datetime.now()現在の時刻を、ローカル タイムゾーンで時刻を表す単純な datetime オブジェクトとして返します。その値は、たとえば DST 移行中 (「フォールバック」) など、あいまいな場合があります。あいまいさを避けるために、UTC タイムゾーンを使用する必要があります。

from datetime import datetime

utc_time = datetime.utcnow()
print(utc_time) # -> 2014-12-22 22:48:59.916417

または、対応するタイムゾーン情報が添付されたタイムゾーン対応オブジェクト (Python 3.2+):

from datetime import datetime, timezone

now = datetime.now(timezone.utc).astimezone()
print(now) # -> 2014-12-23 01:49:25.837541+03:00
于 2014-12-22T22:52:47.630 に答える
21

http://crsmithdev.com/arrow/から矢印モジュールを試してください:

import arrow
arrow.now()

または UTC バージョン:

arrow.utcnow()

出力を変更するには、.format() を追加します。

arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')

特定のタイムゾーンの場合:

arrow.now('US/Pacific')

1時間前:

arrow.utcnow().replace(hours=-1)

または、要点が必要な場合。

arrow.get('2013-05-11T21:23:58.970460+00:00').humanize()
>>> '2 years ago'
于 2015-11-14T02:02:45.137 に答える
17

以下を試すことができます

import datetime

now = datetime.datetime.now()
print(now)

また

import datetime

now = datetime.datetime.now()
print(now.strftime("%Y-%b-%d, %A %I:%M:%S"))
于 2020-06-04T22:29:18.353 に答える
9
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time

dateは日付を印刷し、 time は時刻を印刷します。

于 2016-07-14T05:50:20.183 に答える
9

以下は、フォーマットせずに時間を取得するために使用するものです。分割方法が気に入らない人もいますが、次の場合に役立ちます。

from time import ctime
print ctime().split()[3]

HH:MM:SS 形式で印刷されます。

于 2015-05-01T01:39:08.203 に答える
7

現在の日時属性を取得します。

import datetime

currentDT = datetime.datetime.now()

print ("Current Year is: %d" % currentDT.year)
print ("Current Month is: %d" % currentDT.month)
print ("Current Day is: %d" % currentDT.day)
print ("Current Hour is: %d" % currentDT.hour)
print ("Current Minute is: %d" % currentDT.minute)
print ("Current Second is: %d" % currentDT.second)
print ("Current Microsecond is: %d" % currentDT.microsecond)


#!/usr/bin/python
import time;

ticks = time.time()
print "Number of ticks since "12:00am, Jan 1, 1970":", ticks
于 2019-03-04T08:40:39.680 に答える