Pythonのtimeモジュールのtime.time()
は,システムの時間を返すのですか,それともUTCの時間を返すのですか?
time.time()`]1関数は、エポックからの秒数を秒単位で返します。 なお、エポックとは、UTCの1970年1月1日の始まりと定義されています。 つまり、エポックはUTCで定義されており、グローバルな時間の瞬間を確立しています。 どこにいても、同じ瞬間に同じ値を返すのが、"seconds past epoch"(time.time())です。
以下は、私のコンピュータで実行したサンプル出力で、同様に文字列に変換しています。
Python 2.7.3 (default, Apr 24 2012, 00:00:54)
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> ts = time.time()
>>> print ts
1355563265.81
>>> import datetime
>>> st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
>>> print st
2012-12-15 01:21:05
>>>
変数ts
は、秒単位で返される時間です。 その後、datetime
ライブラリを使って文字列に変換し、人間が読めるような文字列にしました。
これは、テキストファイルで使用できるtext form of a timestampのためのものです。(過去に質問のタイトルが違っていたので、この回答の紹介文を変更し、どのように時間と解釈されるかを明確にしました。[2016-01-14更新])
タイムスタンプは、datetime.datetime
の.now()
や.utcnow()
を使って、文字列として取得することができます。
>>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000
nowは予想通り
utcnow` とは異なりますが、それ以外は同じように動作します。
>>> print datetime.datetime.now()
2012-12-15 11:15:09.205000
タイムスタンプを明示的に文字列に変換することができます。
>>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000'
あるいは、さらに明示的にタイムスタンプを好きなようにフォーマットすることもできます。
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM'
ISOフォーマットが必要な場合は、オブジェクトの.isoformat()
メソッドを使用します。
>>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000'
変換せずに計算や印刷をするために、変数で使用することができます。
>>> ts = datetime.datetime.now()
>>> tf = datetime.datetime.now()
>>> te = tf - ts
>>> print ts
2015-04-21 12:02:19.209915
>>> print tf
2015-04-21 12:02:30.449895
>>> print te
0:00:11.239980
>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318
少なくとも、これがコンセプトです。