![](/img/trans.png)
[英]What is this date time format? How to convert it into a human readable output? Why it returns this output?
[英]How to convert nanoseconds of uptime into a readable date time format
我从android可穿戴设备中提取了加速计数据。 在查看数据时,我意识到时间戳不是unix可转换的。 经过研究,我看到时间戳在正常运行时间实际上是纳秒。 我的问题与Accelerometer SensorEvent时间戳相同。 但是由于我不知道Java,我不知道如何使用提供的解决方案进行转换。 是否有任何python方法可以将正常运行时间内的纳秒转换为可读的日期时间格式? 时间戳的示例是“45900482044637”。
Duration.ofNanos ( 45_900_482_044_637L )
PT12H45M0.482044637S
Java 8及更高版本为此目的有一个Duration
类,作为新java.time框架的一部分(参见教程 )。 这些新类具有纳秒分辨率(小数点后九位小数)。 Duration
表示一段时间,以小时,分钟和秒为单位。
Android目前不使用Java 8技术,但有一个java.time到Java 6和7的后端口。在ThreeTenABP项目中进一步适应Android。
注意L
附加到数字文字很long
。 此外,下划线使人类更容易破译冗长的数字。
long input = 45_900_482_044_637L;
让我们将该数字转换为Duration
对象。
Duration duration = Duration.ofNanos ( input );
当我们生成该Duration
对象的String表示时,我们得到一个使用ISO 8601标准格式化的String。 该标准使用模式PnYnMnDTnHnMnS
,其中P
标记开头, T
将小时 - 月 - 日与小时 - 分 - 秒分开。
System.out.println ( "duration: " + duration );
答案是十二小时四十五分钟,还有几分之一秒。
持续时间:PT12H45M0.482044637S
java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧遗留日期时间类,如java.util.Date
, Calendar
和SimpleDateFormat
。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程 。 并搜索Stack Overflow以获取许多示例和解释。 规范是JSR 310 。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展了java.time。 该项目是未来可能添加到java.time的试验场。 您可以在这里找到一些有用的类,比如Interval
, YearWeek
, YearQuarter
,和更多 。
要在Python中以人类可读的格式获得正常运行时间:
>>> from datetime import timedelta
>>> ns = 45900482044637
>>> print(timedelta(microseconds=round(ns, -3) // 1000))
12:45:00.482045
使用:
long millis = TimeUnit.MILLISECONDS.convert(nanosecond, TimeUnit.NANOSECONDS);
Date date = new Date(millis );
DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd hh:mm aaa");
String dateFormatted = formatter.format(date);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.