可分辨的java.util.Date

时间:2013-06-17 23:42:59

标签: android

我正在尝试将其中一个类设为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”

我假设在包裹过程中有些事情搞砸了?

2 个答案:

答案 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