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

回答編集履歴

1

追記を受けての追記

2018/08/13 19:05

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -15,4 +15,24 @@
15
15
  ただ、質問冒頭の
16
16
  > 日付文字列の時刻をUTCとして、timezone の分だけ前後したunixtime を出力したいのですが…
17
17
 
18
- というのがuniximeの定義への誤解に基づく仕様な気がするので、最終的にどういうことをしたいのかを追記されると良いと思います。
18
+ というのがuniximeの定義への誤解に基づく仕様な気がするので、最終的にどういうことをしたいのかを追記されると良いと思います。
19
+
20
+
21
+ ---
22
+ 追記に対する回答
23
+ > 日付文字列とtimezoneを現した数値があります(Asia/Tokyoなら+9、America/Pacificなら-8)。
24
+ > 他から受け取ったunixtimeの値と比較して、片方より未来か過去かを判定しようとしています。
25
+ > 同じ形式で出力してそれを比較すれば良いと思い、
26
+ > 日付文字列とtimezone の値をunixtimeへ変換しようとしたのですが…
27
+
28
+ この発想は正しいので、(2)の方法でそれぞれDateTimeオブジェクトを作ってunixtimeで比較するか、
29
+ [オブジェクトをそのまま比較](https://qiita.com/Hiraku/items/50b09e815cdcfd9fbafd)(こんなことできるんですね)すればどちらが未来かわかりますね。
30
+
31
+ (2)の場合、
32
+ string(23) "2018-08-13 00:00:00 UTC"
33
+ string(10) "1534118400"
34
+
35
+ string(30) "2018-08-13 00:00:00 Asia/Tokyo"
36
+ string(10) "1534086000"
37
+ だと、UTCの方が値が大きい(1970/1/1からの経過秒数が多い)ので同じ時間でUTCとJSTだとUTCの方が未来(日本よりロンドンの方が日付変更が遅い)である
38
+ と判定できます。