我试图将created_utc
日期从Reddit的json转换为Date
对象,但我不断得到一个" Unparceable"错误。他们日期的一个例子是:created_utc": 1.43701862E9,
我告诉他的是一个unix时间戳。
根据我的研究,这段代码应该转换它:
String date = "1.43701862E9";
java.util.Date time = new java.util.Date((long)date*1000);
但显然我在将日期乘以1000时收到错误。
这是我通常用来转换字符串日期的代码:
String date = "1.43701862E9";
Calendar cal = Calendar.getInstance(TimeZone.getDefault());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
format.parse(date);
答案 0 :(得分:5)
这应该适合你:
String
输出:
Long
由于您使用了科学记数法,因此您无法使用Long.parseLong(String s)
类解析Long
:.longValue()
(您也不能简单地使用字符串转换字符串#39;重新尝试)。相反,我使用Double.valueOf()
方法并使用{{1}}
答案 1 :(得分:2)
在Java 8及更高版本中,您可以使用新的java.time package来取代麻烦的旧java.util.Date /。日历类。 (Tutorial)
String input = "1.43701862E9";
long milliSinceEpoch = Double.valueOf( input ).longValue() * 1_000L ;
Instant instant = Instant.ofEpochMilli( milliSinceEpoch ) ;
ZoneId zoneId = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId ) ;
尽量避免使用java.util.Date/.Calendar,但如果需要,可以转换。
java.util.Date date = Date.from( zdt.toInstant() ); // Or… Date.from( instant );
java.util.Calendar calendar = GregorianCalendar.from( zdt );