4

我正在尝试使我的一个类 Parcelable,它的属性之一是 Date 对象。

在 writeToParcel() 方法中,我有:

out.writeLong(myDate.getTime());

在我的 createFromParcel() 方法中,我有

person.setDate(new Date(in.readLong() * 1000));

我传递给我的意图的对象有一个这样创建的日期:

new Date(2000,12,06)

但是,当我在另一边读出来时,在另一个活动中:

myDate.getYear()+"-"+myDate.getMonth()+"-"+myDate.getDay()

它打印出“2001-0-0”

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

4

2 回答 2

3

您正在写出自 Unix 纪元以来的毫秒数(请参阅文​​档getTime())。

自 Unix 纪元以来,接受值的Date构造函数以毫秒为单位(请参阅该构造函数的文档)。long

相反,您将自 Unix 纪元以来的微秒传递给构造函数。只需将readLong()值传递给Date构造函数,看看是否有帮助。

于 2013-06-17T23:47:07.243 回答
1

您的错误在于您创建 Date 对象的方式,请查看文档以获取有关它的更多信息。

参数

年,0 是 1900(例如 100 是 2000)。

一年中的月份,0 - 11(例如六月是 5)。

一个月中的一天,1 - 31(不认为它需要示例)。

如您所见,当您执行此“新日期(2000,12,06) ”时,您并没有创建您认为您首先要创建的日期。另外请不要说该方法自 API 1 以来已被弃用,所以请不要使用它,除非您的目标是 API 1,否则我认为没有人再这样做了。

此外,正如 CommonsWare 告诉您的那样,在阅读时删除最后的 1000

于 2014-06-17T17:43:17.180 回答