我以下列格式从通知服务器收到了日期字符串。 的 2017-09-04T07:09:30.269 + 00:00
我希望它转换为long以保存在数据库中。
public static long convertStringDatetoLong(final String date, final String inputFormat) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(inputFormat);
try {
Date outputDate = simpleDateFormat.parse(date);
return outputDate.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
然后我打电话给convertStringDatetoLong(date, "yyyy-mm-dd'T'HH:mm:ss.SSSXXX");
但我发现转换长度有点错误。
结果时间是1483513770269,这是错误的。 它应该有时像1504509270911,它以15开头...(我用currentTimeMillis得到)
2017-09-04T07:09:30.269 + 00:00 ,输入时区与我的时区不同,即GMT + 08:00
我不知道如何将其转换为设备时区并获得正确的毫秒保存时间。
更新
抱歉我做的很蠢。它应该是MM而不是mm。
答案 0 :(得分:0)
您可以使用对象ZonedDateTime
轻松完成此操作:
String example = "2017-09-04T07:09:30.269+00:00";
OffsetDateTime offset = OffsetDateTime.parse(example);
ZonedDateTime result = offset.atZoneSameInstant( ZoneId.systemDefault() ); // Put you wanted zone here
从那里开始,您可以使用以下代码行轻松获取时间戳:
Long timestamp = startTime.toInstant().getEpochSecond();
答案 1 :(得分:0)
试试这个,
String timeStr = "2017-09-04T07:09:30.269+00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date Obj= null;
try {
Obj = sdf.parse(timeStr);
} catch (ParseException e) {
e.printStackTrace();
}
long time = Obj.getTime();
System.out.println(time);