我正在从第三方URL读取JSON。在那个JSON数据中,我找到了这个时间戳记开始时间:1522899000000(在4/5/2018-> 2018年4月5日)...我以为是Unix时间戳记并尝试进行转换,但它说是1912年:-)。这是什么时间戳?我正在从Java应用程序读取此JSON。如何将其转换为Java日期时间?
参考方案
tl; dr
显然,1522899000000
是自epoch reference的1970-01-01T00:00:00Z,即UTC 1970年的第一刻以来的毫秒数。
Instant.ofEpochMilli( 1_522_899_000_000L )
2018-04-05T03:30:00Z
java.time
现代方法使用java.time类代替了麻烦的旧旧类(Date
,Calendar
,SimpleDateFormat
)。
自1970年1月1日T00:00Z以来,您的输入似乎是毫秒数。有时称为Unix time,尽管不是绝对的。
Instant
因此解析为Instant
。 Instant
类代表UTC在时间轴上的时刻,分辨率为nanoseconds(十进制小数的九(9)位)。
long input = 1_522_899_000_000L ;
Instant instant = Instant.ofEpochMilli( input );
Instant.toString():2018-04-05T03:30:00Z
如果您输入的是文本,请使用Long.parse
解析为数字。
long input = Long.parseLong( "1522899000000" ) ;
Instant instant = Instant.ofEpochMilli( input );
ZonedDateTime
根据定义,Instant
始终为UTC。如果要在特定区域(时区)的人所使用的挂钟时间中看到同一时刻,请应用ZoneId
以获取ZonedDateTime
对象。
以continent/region
的格式指定proper time zone name,例如America/Montreal
,Africa/Casablanca
或Pacific/Auckland
。切勿使用3-4个字母的伪区域(例如EST
或IST
),因为它们不是真实的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
zdt.toString():2018-04-05T15:30 + 12:00 [太平洋/奥克兰]
DateTimeFormatter
上面生成的字符串为标准ISO 8601格式。对于其他格式,请在Stack Overflow中搜索DateTimeFormatter
类。
关于java.time
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和SimpleDateFormat
。
现在位于Joda-Time中的maintenance mode项目建议迁移到java.time类。
要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
您可以直接与数据库交换java.time对象。使用与JDBC driver或更高版本兼容的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
在哪里获取java.time类?
Java SE 8,Java SE 9和更高版本
内置的
标准Java API的一部分,具有捆绑的实现。
Java 9添加了一些次要功能和修复。
Java SE 6和Java SE 7
ThreeTen-Backport中的大部分java.time功能都已反向移植到Java 6和7。
Android
更高版本的Android捆绑了java.time类的实现。
对于早期的Android(<26),ThreeTenABP项目改编了ThreeTen-Backport(如上所述)。请参见How to use ThreeTenABP…。
ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如Interval
,YearWeek
,YearQuarter
和more。
例如,如果您具有以下JSON对象(删除python的分号):values = { a: 1, b: { c: 2, d: { e: 3 } }, f: 4, g: 5 }; 如果您尝试在JS中打印values,它将正常工作。但是在Python中,它将返回错误NameError: name 'a' is not defined,这意味着未定…
PHP json_encode数组到javascript关联数组 - javascript我有一些从PHP中读取的mysqli列。它正在完美地获取和回显。$results = mysqli_fetch_assoc(mysqli_query($conn, $querystring)); echo json_encode($results); //$results = {"title":"Sea Shells"…
Javascript-从当前网址中删除查询字符串 - javascript单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…
在js内的php上调试var - javascript我有一个脚本(editablegrid)在js文件(JSON)(demo.js)内加载一个php文件(loaddata.php)。当我对php文件发出js警报时:echo '<script language="javascript">'; echo 'alert("message suc…
如何在PHP中将json转换为人类可读 - javascript我是新的!请对我放松。我有一个PHP文件,该文件在运行时会发送电子邮件。电子邮件的内容是一个长json字符串,但是例如,可以说它是一个短字符串,如下所示:{ "firstName": "Jon", "lastName": "Ryan" } 该字符串保存在名为$ json_resp…