我正在尝试将其中一个类设为Parcelable,其中一个属性是Date对象。
在writeToParcel()方法中,我有:
out.writeLong(myDate.getTime());
在我的createFromParcel()方法中,我有
person.setDate(new Date(in.readLong() * 1000));
我传递给我的Intent的对象有一个像这样创建的日期:
new Date(2000,12,06)
但是,当我在另一方面阅读时,在其他活动中:
myDate.getYear()+"-"+myDate.getMonth()+"-"+myDate.getDay()
打印出“2001-0-0”
我假设在包裹过程中有些事情搞砸了?
答案 0 :(得分:3)
你写的是自Unix纪元以来的毫秒(见the documentation for getTime()
)。
取Date
值的long
构造函数自Unix纪元以来以毫秒为单位(参见the documentation for that constructor)。
相反,你是从Unix纪元到构造函数的微秒。只需将readLong()
值传递给Date
构造函数,看看是否有帮助。
答案 1 :(得分:1)
您的错误与创建Date对象的方式有关,请查看documentation以获取有关它的更多信息。
<强>参数强>
年,0是1900年(例如100年是2000年)。
一年中的一个月,0 - 11(例如六月是5)。每月的某一天,1 - 31(不要认为它需要例子)。
正如您所看到的,当您执行此操作&#34; 新日期(2000,12,06)&#34;时,您并未创建 你认为你在第一时间创造的日期。也请不要那个方法 自API 1以来已被弃用,因此请不要使用它,除非您的目标是API 1, 我不认为有人在做这件事。
另外,正如CommonsWare告诉你的那样,在阅读时删除1000 。