我正在尝试使我的一个类成为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“
我猜是包裹处理过程中出了什么问题?
发布于 2013-06-18 07:47:07
您写出的是从Unix时代开始的毫秒数(参见the documentation for getTime())。
接受long值的Date构造函数从Unix时代(参见the documentation for that constructor)开始所用的时间是毫秒。
相反,您正在向构造函数传递从Unix时代开始的微秒数。只需将readLong()值传递给Date构造函数,看看是否有帮助。
发布于 2014-06-18 01:43:17
您的错误在于您创建Date对象的方式,请检查documentation以了解有关它的更多信息。
参数
年份,0是1900 (例如100是2000)。
一年中的月份,0- 11 (例如,6月是5)。
每月的某一天,1- 31 (我不认为它需要示例)。
正如您所看到的,当您执行这个“ Date(2000,12,06)”时,您创建的日期并不是您最初认为要创建的日期。另外,请注意,自从API1以来,该方法已被弃用,所以请不要使用它,除非您的目标是API1,我认为没有人再这样做了。
另外,正如CommonsWare告诉你的那样,在阅读时去掉了结尾的1000个。
https://stackoverflow.com/questions/17158569
复制相似问题