現在時刻を取得するために使用されるモジュール/メソッドは何ですか?
つかいます:
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189
そしてちょうどその時:
>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)
>>> print(datetime.datetime.now().time())
09:17:51.914526
詳しくは ドキュメント をご覧ください。
入力を節約するために、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
これは、データベースに保存するためのタイムスタンプを取得するための形式です。整数に変換できる単純な浮動小数点数です。 1970年1月1日00:00:00からの秒数を表すので、秒単位の算術計算にも適しています。また、次に見る他の時間表現と比較してメモリ使用量が少なくてすみます。
>>> time.time()
1424233311.771502
このタイムスタンプはうるう秒を考慮していないので、線形ではありません - うるう秒は無視されます。そのため、国際的なUTC標準と同等ではありませんが、それは近いため、ほとんどの記録管理のケースで非常に優れています。
ただし、これは人間のスケジューリングには理想的ではありません。将来のイベントがある特定の時点で開催されるのであれば、datetimeオブジェクトまたはserialized 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
ナイーブなdatetimeオブジェクトをpytz
timezone localize
メソッドで(または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時間でシリアライズして that をデータベースに格納することもできますが、最初に示したUnix Epoch時間を単に格納するよりもはるかに多くのメモリが必要になりエラーが発生しやすくなります。
他の時間帯の表示方法は、特にエラーが発生しやすくなります。特に、異なるタイムゾーンからのデータを扱う場合はそうです。文字列またはシリアル化されたdatetimeオブジェクトがどのタイムゾーンを対象としていたかについて混乱しないようにする必要があります。
Pythonを使用してユーザーに時間を表示している場合、ctime
はテーブルではなく(通常はうまくソートされません)、おそらく時計ではうまく機能します。しかし、私は個人的には、Pythonで時間を扱うとき、Unix時間かタイムゾーンを意識したUTCのdatetime
オブジェクトを使うことをお勧めします。
行う
from time import time
t = time()
t
- 浮動小数点数。時間間隔測定に適しています。UnixとWindowsプラットフォームには多少の違いがあります。
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'
現在のGMTを指定の形式で出力します。 localtime()メソッドもあります。
この ページ に詳細があります。
すべての良い提案が、私は自分自身でctime()
を使うのが一番簡単だと思います:
In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'
これは現在の現地時間のフォーマットの整った文字列表現を与える。
シンプルで簡単
datetime
モジュールを使うと、
import datetime
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
出力:
2017-10-17 23:48:55
_または_
time
を使う
import time
print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))
出力:
2017-10-17 18:22:26
現在の時間がtime
オブジェクトとして必要な場合
>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
最速の方法は
>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
.isoformat()
はドキュメントの中にありますが、まだここにはありません(これは@Ray Vegaの答えによく似ています):
>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
合衆国海軍の公式計時係である アメリカ海軍天文台 に聞いてみませんか?
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])
あなたが(私のように)D.C.エリアに住んでいるなら、待ち時間はそれほど悪くないかもしれません….
これは私が結局行ったものです:
>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11
また、この表はあなたが望むようにフォーマットされた日付を得るために適切なフォーマットコードを選ぶために必要な参照です(Pythonの "datetime"ドキュメント here から)。
Pandas を使用して現在の時刻を取得すると、当面の問題をやり過ぎるようになります。
import pandas as pd
print (pd.datetime.now())
print (pd.datetime.now().date())
print (pd.datetime.now().year)
print (pd.datetime.now().month)
print (pd.datetime.now().day)
print (pd.datetime.now().hour)
print (pd.datetime.now().minute)
print (pd.datetime.now().second)
print (pd.datetime.now().microsecond)
出力:
2017-09-22 12:44:56.092642
2017-09-22
2017
9
22
12
44
56
92693
import datetime
date_time = datetime.datetime.now()
date = date_time.date() # Gives the date
time = date_time.time() # Gives the time
print date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond
dir(date)
またはパッケージを含む変数を実行してください。変数に関連付けられているすべての属性とメソッドを取得できます。
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
デフォルトでは、now()
関数はYYYY-MM-DD HH:MM:SS:MS
フォーマットで出力を返します。以下のサンプルスクリプトを使用して、現在の日付と時刻をPythonスクリプトで取得し、結果を画面に表示します。以下の内容でファイルgetDateTime1.py
を作成します。
import datetime
currentDT = datetime.datetime.now()
print (str(currentDT))
出力は以下のようになります。
2018-03-01 17:03:46.759624
すでにNumPyを使っているのであれば、直接numpy.datetime64()関数を使うことができます。
import numpy as np
str(np.datetime64('now'))
日付のみ
str(np.datetime64('today'))
あるいは、Pandasを既に使っているのであれば、pandas.to_datetime()関数を使うことができます。
import pandas as pd
str(pd.to_datetime('now'))
または
str(pd.to_datetime('today'))
http://crsmithdev.com/arrow/ から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'
time
モジュールを使うことができます。
import time
print time.strftime("%d/%m/%Y")
>>> 06/02/2015
大文字のY
を使うと一年中、y
を使うと06/02/15
ができます。
あなたはより長い時間を与えるためにも使うことができます。
time.strftime("%a, %d %b %Y %H:%M:%S")
>>> 'Fri, 06 Feb 2015 17:45:09'
ミリ秒で時間を取得したいのですが。それらを取得する簡単な方法:
import time, datetime
print(datetime.datetime.now().time()) # 11:20:08.272239
# Or in a more complicated way
print(datetime.datetime.now().time().isoformat()) # 11:20:08.272239
print(datetime.datetime.now().time().strftime('%H:%M:%S.%f')) # 11:20:08.272239
# But do not use this:
print(time.strftime("%H:%M:%S.%f", time.localtime()), str) # 11:20:08.%f
しかし、私はほしい ほんの数ミリ秒 よね。それらを取得するための最短の方法:
import time
time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 1000)
# 11:34:23.751
小数点の数を調整するために最後の乗算からゼロを追加または削除するか、単に次のようにします。
def get_time_str(decimal_points=3):
return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)
>>> import datetime, time
>>> time = strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:20:58:20S'
この質問はそれのためだけに新しい答えを必要としません...しかし、光沢のある新しい風味のあるおもちゃ/モジュールは十分な正当化です。それは Pendulum library で、arrowが試みたような固有の欠陥やバグがない限り、arrowが試みたようなことをしているようです。
たとえば、元の質問に対する答えは次のとおりです。
>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.utcnow())
2018-08-13T19:29:35.051023+00:00
心配するために、複数のRFCやISOを含む、アドレス指定を必要とする多くの規格があります。今までそれらを混同してください。心配しないでください、dir(pendulum.constants)
をちょっと見てください。ただし、そこにはRFCとISOのフォーマット以外のものがあります。
現地語を言うと、どういう意味ですか?ええと、
>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>
おそらくあなたの残りの大部分は他の場所を意味します。
そしてそれは続きます。短い話:振り子は、HTTPに対する要求が日付と時刻に対して行ったことを試みます。特にその使いやすさと豊富なドキュメンテーションの両方のために、それは考慮する価値があります。
現在のタイムスタンプをミリ秒単位で表示したい場合(たとえば、実行時間を測定する場合など)、 "timeit"モジュールを使用することもできます。
import timeit
start_time = timeit.default_timer()
do_stuff_you_want_to_measure()
end_time = timeit.default_timer()
print("Elapsed time: {}".format(end_time - start_time))
以下はフォーマットせずに時間を取得するために使用するものです。分割方法を好まない人もいますが、ここでは役に立ちます。
from time import ctime
print ctime().split()[3]
HH:MM:SS形式で印刷されます。
誰もまだそれについて言及していないので、これは私が最近遭遇したものです... datetimeのutcnow()と組み合わせたpytzタイムゾーンのfromutc()メソッドは私が役に立つ現在の時刻(と日付)を得るために私が見つけた最良の方法ですどのタイムゾーンでも。
from datetime import datetime
import pytz
JST = pytz.timezone("Asia/Tokyo")
local_time = JST.fromutc(datetime.utcnow())
あなたが望むのが時間だけであれば、local_time.time()
でそれを得ることができます。
あなたは時間を得るためにこの関数を使うことができます(残念ながらそれは午前または午後を言いません):
def gettime():
from datetime import datetime
return ((str(datetime.now())).split(' ')[1]).split('.')[0]
後でマージする時間、分、秒、ミリ秒を取得するには、以下の関数を使用できます。
時:
def gethour():
from datetime import datetime
return return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]
分:
def getminute():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]
秒:
def getsecond():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]
ミリ秒:
def getmillisecond():
from datetime import datetime
return return (str(datetime.now())).split('.')[1]
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time
date は日付を印刷し、 time は時間を印刷します。
from time import ctime
// Day {Mon,Tue,..}
print ctime().split()[0]
// Month {Jan, Feb,..}
print ctime().split()[1]
// Date {1,2,..}
print ctime().split()[2]
// HH:MM:SS
print ctime().split()[3]
// Year {2018,..}
print ctime().split()[4]
Ctime()を呼び出すとき、秒を 'Day Month Date HH:MM:SS Year'の形式の文字列に変換し(たとえば、 'Wed January 17 16:53:22 2018')、それからsplit()メソッドを呼び出します。あなたの文字列['Wed'、 'Jan'、 '17'、 '16:56:45'、 '2018']からリストを作成します(デフォルトの区切り文字はスペースです)。
大括弧は、リスト内の必要な引数を「選択」するために使用されます。
1行だけ呼び出すようにしてください。私がしたようにそれらを呼ぶべきではありません、それはほんの一例でした。
これはとても簡単です。試してください:
import datetime
date_time = str(datetime.datetime.now())
date = date_time.split()[0]
time = date_time.split()[1]
get current date time attributes:
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
最初にdatetimeからdatetimeモジュールをインポートします
from datetime import datetime
その後、現在の時刻を 'yyyy-mm-dd hh:mm:ss'として印刷します。
print(str(datetime.now())
'hh:mm:ss'という形式の時間だけを取得するには、ssは全秒数と経過秒数の分数を表します。
print(str(datetime.now()[11:])
Datetime.now()を文字列に変換すると、通常のDATES AND TIMESのような形式の回答が得られます。
この質問はPythonに関するものですが、DjangoはPythonで最も広く使用されているフレームワークの1つなので、Djangoを使用している場合は常にtimezone.now()
ではなくdatetime.datetime.now()
を使用できることに注意してください。前者はタイムゾーン「認識」していますが、後者は認識していません。
timezone.now()
の詳細と理論的根拠については this SO answer と Djangoのドキュメント を参照してください。
from Django.utils import timezone
now = timezone.now()