Android 将 unix 时间戳设置为 DatePicker
Posted
技术标签:
【中文标题】Android 将 unix 时间戳设置为 DatePicker【英文标题】:Android set unix timestamp to a DatePicker 【发布时间】:2012-07-25 11:48:29 【问题描述】:我正在尝试使用此代码为 android DatePicker 设置 unix 时间戳:
Date date = new Date();
date.setTime(((long)unixTimeStamp*1000));
datePickerDateDue.init(date.getYear(), date.getMonth(), date.getDay(), null);
但 Android DatePicker 设置为错误值(1900 年 1 月 1 日)
(((我不喜欢玩枣子...)))
【问题讨论】:
你能展示一下unixTimeStamp()
方法吗?另外,什么是“错误值”?
错误值是 1900 年 1 月 1 日,对于 unix 时间戳,它可能类似于今天的 1343336160:2012 年 7 月 26 日星期四 20:56:00 GMT
“可能”?您是否记录了它以确保值正确?此外,您应该为此使用Calendar
,因为许多Date
方法已被弃用。
是的,Eric 甚至直接硬编码了一个值,但仍然是错误的,我使用的方法都没有被弃用,但如果您认为可以解决问题,我不介意使用 Calendar 代替?
【参考方案1】:
根据 cmets,尝试使用 Calendar
类。您还可以Log
year
、month
和day
的输出以确保它们是正确的。
Calendar c = Calendar.getInstance();
c.setTimeInMillis(((long) unixTimeStamp) * 1000L);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
datePickerDateDue.init(year, month, day, null);
【讨论】:
好的,我编辑了你的答案,它的工作原理是这样的,但是 Long.parseLong() 并不是很漂亮,所以如果你有任何其他方式可以再次编辑你的答案;)非常感谢跨度> 你试过使用((long) unixTimeStamp) * 1000L
吗?如果你能在数学上做到这一点,那将是最佳的。
我以后会记得使用日历而不是日期以上是关于Android 将 unix 时间戳设置为 DatePicker的主要内容,如果未能解决你的问题,请参考以下文章
Excel技巧|如何在Excel中快速的批量将unix时间戳转化为北京时间