"TransactionDateTime": "/Date(1457540067076-0500)/"
我有交易日期时间通过JSON上面的格式从Java。
上面提到的"transactiondatetime"的格式是什么?我怎么能像上面那样通过呢?请给我一个例子,如果有的话。谢谢你的帮助
看起来像长毫秒,后面跟着时区。从epoch开始的秒数,UTC
后面跟着tz**编辑**
Date date = new Date(1457540067076l);
System.out.println(date);
输出:Wed Mar 09 21:44:27 IST 2016
Java遵循称为epoch time的计时系统,它相对于1970年1月1日的日期。更多关于epoch转换的细节在这里。
您期望的JSON格式由HHMM格式的时间和时区偏移量组成。
为此,您需要获取事务时间的epoch格式的时间。此外,还需要为您的客户端获取时区。
例如: Date transactionDateTime = new Date();
long time = transactionDateTime.getTime();
Calendar calendar = Calendar.getInstance();
int timezone = ((calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET)) / (60 * 1000));
System.out.println(time + " - " + String.format("%02d",timezone/60)+""+String.format("%02d",timezone%60));
您需要根据您的格式要求修改示例代码。还要注意时区的符号(+或-)
阅读你的API文档
您应该阅读任何web服务向您发送此数据的文档。
第一部分显示是自1970 UTC开始的纪元以来的毫秒数。第二部分-0500
显示与UTC相差5小时。但这只是猜测。你只能通过阅读文档来确定这些部分,并解决下面讨论的歧义。
因此,首先将连字符上的字符串拆分为两个子字符串,如本问题中所讨论的。
接下来,将计数解析为Instant
。
Instant instant = Instant.ofEpochMilli( countOfMillisecondsFromEpochNumberPortionOfInput );
<标题> 调整如何解释这个组合是模棱两可的。UTC的毫秒数应该调整5个小时吗?还是已经调整到5小时了?
另一个歧义:负号是表示UTC的"后"还是"前"?目前的做法通常是"落后",但一些旧的做法意味着"领先"。我假设是"behind"
我将假设计数是在UTC中,然后通过应用ZoneOffset
调整为比UTC晚5小时。时间和日期可能会改变,以表示作为不同时钟时间的同一时刻。
ZoneOffset offset = ZoneOffset.of( offsetStringPortionOfInput );
OffsetDateTime odt = instant.atOffset( offset ); // time-of-day and perhaps date will change to represent the same simultaneous moment viewed as a different wall-clock time.
关于java.time java。时间框架内置于Java 8及以后版本中。这些类取代了旧的麻烦的日期时间类,如java.util.Date
, .Calendar
, &java.text.SimpleDateFormat
。
Joda-Time项目,现在处于维护模式,建议迁移到java.time.
要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获得许多示例和解释。
大部分java。时间功能向后移植到Java 6;7在ThreeTen-Backport,并进一步适应Android在ThreeTenABP。
three - ten - extra项目扩展了java。有额外课程的时间。这个项目是将来可能添加到java.time的试验场。
标题>标题>