2012-08-26 156 views
0

我想事件时间戳转换的日期,我的代码:SensorEvent.timestamp日期转换问题

Calendar c = Calendar.getInstance(); 
c.setTimeInMillis(event.timestamp/1000000);//time in ms (timestamp is in ns) 
System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(c.getTime())); 

为什么我获得1970年1月2日?

回答

3

我假设你正在使用SensorEvent.timestamp。该文档没有提到这是自上次启动以来的纳秒(与SystemClock.uptimeMillis()相当)的清醒时间,而不是自Unix时代以来的时间。总之,看起来你的设备已经醒来不到两天了。

此外,Calendar.getTime()返回一个Date对象,并有一个日期构造函数毫秒,所以你可以缩短代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
System.out.println(sdf.format(new Date(event.timestamp/1000000))); 
+0

我无法从传感器时间戳当前时间? – user1610075

+0

你可以称之为'System.currentTimeMillis的()'当你在'onSensorChanged(事件)'这将让你的事件时间(几毫秒内),或者你可以尝试寻找上一次的开机时间,并添加事件发生的时间。 (要明白,自从时代以来,“长”字太小,持续纳秒。) – Sam