現在の時刻を取得するために使用されるモジュール/メソッドは何ですか?
49 に答える
使用する:
>>> 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.
次に、上記のすべてから先頭を削除します。
使用できますtime.strftime()
:
>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')
この例では、出力は次のようになります。'2013-09-18 11:16:32'
strftime
ディレクティブのリストは次のとおりです。
Harley's answerに似ていますが、この関数を使用しstr()
て、クイック アンド ダーティで、人間が読みやすい形式を使用します。
>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
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 にはtimezone
utctimezone
インスタンスがアタッチされたクラスがあり、これによりオブジェクトのタイムゾーンも認識されます (ただし、便利な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
timezonelocalize
メソッドを使用して、または 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
オブジェクトを使用することを個人的にお勧めします。
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'
これにより、現在の GMT が指定された形式で出力されます。方法もありlocaltime()
ます。
このページには詳細があります。
最も速い方法は次のとおりです。
>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
オブジェクトとして現在の時刻が必要な場合time
:
>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
.isoformat()
ドキュメントにはありますが、まだここにはありません(これは@Ray Vegaの回答に非常に似ています):
>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
アメリカ海軍の公式タイムキーパーである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 エリアに住んでいる場合、遅延はそれほど悪くないかもしれません...
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
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'
以下を試すことができます
import datetime
now = datetime.datetime.now()
print(now)
また
import datetime
now = datetime.datetime.now()
print(now.strftime("%Y-%b-%d, %A %I:%M:%S"))
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time
dateは日付を印刷し、 time は時刻を印刷します。
以下は、フォーマットせずに時間を取得するために使用するものです。分割方法が気に入らない人もいますが、次の場合に役立ちます。
from time import ctime
print ctime().split()[3]
HH:MM:SS 形式で印刷されます。
現在の日時属性を取得します。
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