我想我不理解 getTimeInMillis()
. 我've always thought that a milliseconds timestamp represents one date, but on my case, it made me think different. Here, I'm使用方法向数组添加时间戳,如下所示:
Calendar date = Calendar.getInstance();
date.set(2015, 9, 25, 12, 0);
timeArray.push(date.getTimeInMillis());
在代码的其他部分,我在相同的日期做同样的事情:
Calendar date2 = Calendar.getInstance();
date2.set(2015, 9, 25, 12, 0);
不幸的是,这种比较返回false:
timeArray.get(0) == date2.getTimeInMillis();
难道't those two values be true? Or maybe I' ve了解 getTimeInMillis()
方法错了吗?如果是这样,我怎样才能以其他方式实现我想要做的事情呢?
2 回答
我们来看看documenation .
所以根据
set
方法的文件:所以修复应该很简单:首先调用
clear()
方法 .不可变对象
Answer by Timofey是正确的 . 这表明旧的日期时间类具有高度可变性的问题 . 相比之下,替代品java.time和Joda-Time都使用immutable objects . 在此模式中,基于原始对象实例化新鲜的新对象,而不是改变原始对象 .
java.time
以下是Java 8中Java 8时代的一些示例代码.Instant是UTC时间轴上的一个时刻,而ZonedDateTime是调整为时区的瞬间(ZoneId) .
逐件构建
ZonedDateTime
:date,time,zone .通过首先访问
ZonedDateTime
内的Instant
来提取从纪元开始的毫秒数 .走向另一个方向 . BEWARE: 这涉及可能的数据丢失 . java.time框架使用nanoseconds的分辨率,小数秒的9位数 . Milliseconds只是小数秒的3位数 .
转储到控制台 .
跑步时