Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 时间。toMillis(布尔值)不考虑时区_Java_Android - Fatal编程技术网

Java 时间。toMillis(布尔值)不考虑时区

Java 时间。toMillis(布尔值)不考虑时区,java,android,Java,Android,考虑以下代码: Time time1 = new Time("America/Los_Angeles"); // UTC -8 Time time2 = new Time("Pacific/Kiritimati"); // UTC +14 time1.setToNow(); time2.setToNow(); Log.d("timetest", "America/Los_Angeles: " + time1.toMillis(false)); Log.d("timetest", "Paci

考虑以下代码:

Time time1 = new Time("America/Los_Angeles"); // UTC -8
Time time2 = new Time("Pacific/Kiritimati");  // UTC +14

time1.setToNow();
time2.setToNow();

Log.d("timetest", "America/Los_Angeles: " + time1.toMillis(false));
Log.d("timetest", "Pacific/Kiritimati : " + time2.toMillis(false));
以下是获取输出的日志:

08-03 07:27:50.687: D/timetest(28411): America/Los_Angeles: 1375540070000
08-03 07:27:50.687: D/timetest(28411): Pacific/Kiritimati : 1375540070000

如您所见,毫秒值是相同的,即使它们由于时区的原因相隔整整22小时。这让我相信
Time.toMillis(布尔值)
是基于UTC,而不是
时间的指定时区。我需要一种方法来获得基于
时区的毫秒数。有什么想法吗?

自1970年1月1日纪元00:00:00 UTC以来经过的毫秒数在任何地方都是相同的。你现在是在洛杉矶还是在基里蒂马蒂并不重要


编辑

toMillis
方法将返回自epoch以来的毫秒数。纪元为1970年1月1日UTC 00:00:00

这样想吧。如果人A在大纪元出生在洛杉矶,人B在大纪元出生在基里蒂马蒂,那么人A的年龄将是
time1.toMillis()
,人B的当前年龄将是
time2.toMillis()
,对吗

即使在UTC时区,他们出生时是午夜,但在他们各自的时区,却不是午夜。这可以从他们的时区UTC-8和UTC+14中看出


现在如果
time1.toMillis()!=time2.toMillis()
这意味着这两个人中有一个年龄更大。这意味着他一生中活的时间更长。当然,事实并非如此,因为正如我们所说,他们是同时出生的。这就是为什么您看到的输出是正确的,我认为您不应该尝试更改它。

使用
Time.gmtoff
计算出来,它包含以秒为单位的UTC偏移量

Time time1 = new Time("America/Los_Angeles"); // UTC -8
Time time2 = new Time("Pacific/Kiritimati");  // UTC +14

time1.setToNow();
time2.setToNow();

Log.d("timetest", "America/Los_Angeles: " + (time1.toMillis(false) - (time1.gmtoff * 1000)));
Log.d("timetest", "Pacific/Kiritimati : " + (time2.toMillis(false) - (time2.gmtoff * 1000)));
结果日志:

08-03 07:53:04.866: D/timetest(31414): America/Los_Angeles: 1375566784000
08-03 07:53:04.866: D/timetest(31414): Pacific/Kiritimati : 1375491184000

很高兴知道,但这并不能回答问题。我需要1970年1月1日纪元00:00:00[时区]的毫秒数。@InsanityOnABun你想要它干什么?爪哇只有一个纪元,即1970年1月1日UTC 00:00:00。这用作计算经过时间的参考点。请参阅。@Inasityonabun查看我的编辑。我试图在回答中更清楚一点,以避免任何混乱。是的,我理解所有这些。事实上,我整晚都在黑客攻击这个应用程序,我在这一点上并没有直接思考,哈哈。我慢慢地开始拼凑一些东西来做我需要的事情,但这和这个问题上的任何事情都完全不同。我可能只是将其标记为删除。不过,谢谢你对我有耐心。@InsanityOnABun Sure:)没问题。你应该加上偏移量,而不是减去它。太平洋/基里蒂马蒂岛的时间(长期价值)应该比洛杉矶的价值“更大”,因为基里蒂马蒂岛总是比世界上任何其他地方都先看到新的一天