teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

表示結果にコメントを追加

2017/10/05 10:22

投稿

miyahan
miyahan

スコア3095

answer CHANGED
@@ -33,18 +33,18 @@
33
33
 
34
34
  ```
35
35
  naive : 2017-10-05 12:55:08.247556
36
- naive as UTC: 2017-10-05 12:55:08.247556+00:00
36
+ naive as UTC: 2017-10-05 12:55:08.247556+00:00 # ← 誤り
37
37
  aware/UTC : 2017-10-05 03:55:08.247566+00:00
38
38
  aware/JST : 2017-10-05 12:55:08.285712+09:00
39
39
  -----------------------------------------------
40
40
  naive -> TS: 1507175708.247556
41
- naive as UTC -> TS: 1507208108.247556
41
+ naive as UTC -> TS: 1507208108.247556 # ← 誤り
42
42
  aware/UTC -> TS: 1507175708.247566
43
43
  aware/JST -> TS: 1507175708.285712
44
44
  -----------------------------------------------
45
45
  naive -> TS -> naive: 2017-10-05 03:55:08.247556
46
46
  naive -> TS -> aware: 2017-10-05 03:55:08.247556+00:00
47
- naive as UTC -> TS -> aware: 2017-10-05 12:55:08.247556+00:00
47
+ naive as UTC -> TS -> aware: 2017-10-05 12:55:08.247556+00:00 # ← 誤り
48
48
  ```
49
49
 
50
50
  上記の naive -> TS -> naive および naive -> TS -> aware を見て下さい。ちゃんと戻っているでしょう?
@@ -53,9 +53,9 @@
53
53
 
54
54
  ---
55
55
 
56
- 追記:
56
+ ほかの方の回答を見て追記:
57
57
 
58
- あ。`**日付**のエポック秒` というのはその日の 00:00:00 のUNIX時間を取得したいということですか?もしそうなら時間、分、秒を切り捨てるだけでOKです。
58
+ あ。`**日付**のエポック秒` というのはその日の 00:00:00 のUNIX時間を取得したいということですか?もしそうなら時間、分、秒、ミリ秒を切り捨てればOKです。
59
59
 
60
60
  ```python
61
61
  today = datetime(

1

日付のタイムスタンプについて追記

2017/10/05 10:22

投稿

miyahan
miyahan

スコア3095

answer CHANGED
@@ -49,4 +49,21 @@
49
49
 
50
50
  上記の naive -> TS -> naive および naive -> TS -> aware を見て下さい。ちゃんと戻っているでしょう?
51
51
 
52
- 今回は、`datetime.today()` で naive オブジェクトを作ったのがJST環境、それを `datetime.timestamp()` でUNIX時間に変換したのもJST環境だったのでたまたまうまくいっていますが、複数のタイムゾーンや夏時間がある国のタイムゾーンを取り扱う場合は、aware オブジェクトを使うことをおすすめします。
52
+ 今回は、`datetime.today()` で naive オブジェクトを作ったのがJST環境、それを `datetime.timestamp()` でUNIX時間に変換したのもJST環境だったのでたまたまうまくいっていますが、複数のタイムゾーンや夏時間がある国のタイムゾーンを取り扱う場合は、aware オブジェクトを使うことをおすすめします。
53
+
54
+ ---
55
+
56
+ 追記:
57
+
58
+ あ。`**日付**のエポック秒` というのはその日の 00:00:00 のUNIX時間を取得したいということですか?もしそうなら時間、分、秒を切り捨てるだけでOKです。
59
+
60
+ ```python
61
+ today = datetime(
62
+ *datetime.today().timetuple()[:3], # 年、月、日のみ抽出
63
+ tzinfo=pytz.timezone('Asia/Tokyo'))
64
+ print('now :', datetime.now(pytz.timezone('Asia/Tokyo')).timestamp())
65
+ print('today:', today.timestamp())
66
+
67
+ # now : 1507176685.737086
68
+ # today: 1507128060.0
69
+ ```