时间戳转换问题
Issues with timestamp conversion
这是我在 Java 1.6 中的代码(问题被标记为重复,但建议的解决方案参考 java 1.8)
public static void main(String[] args){
try{
String dateTimeString = "2015-08-10-14.20.40.679279";
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
java.util.Date formattedDate = dateFormat.parse(dateTimeString);
Timestamp formattedTime = new Timestamp(formattedDate.getTime());
System.out.println(formattedTime);
} catch (Throwable t){
t.printStackTrace();
}
}
结果对象是:2015-08-10 14:31:59.279
,很明显在解析分、秒和毫秒时出了点问题,我只是不知道具体是什么。
谢谢!
没有像 SSSSSS 这样的东西。
检查 Simple Date Format manual
你必须退出最后 3 毫秒:
Date d = ( new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS", Locale.US) ).parse("2015-08-10-14.20.40.679279");
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.S").format(d));
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SS").format(d));
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS").format(d));
Date dd = ( new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS", Locale.US) ).parse("2015-08-10-14.20.40.679");
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.S").format(dd));
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SS").format(dd));
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS").format(dd));
获得正确的格式:
2015-08-10-14.31.59.279
2015-08-10-14.31.59.279
2015-08-10-14.31.59.279
2015-08-10-14.20.40.679
2015-08-10-14.20.40.679
2015-08-10-14.20.40.679
看看这个 playground。
这是我在 Java 1.6 中的代码(问题被标记为重复,但建议的解决方案参考 java 1.8)
public static void main(String[] args){
try{
String dateTimeString = "2015-08-10-14.20.40.679279";
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
java.util.Date formattedDate = dateFormat.parse(dateTimeString);
Timestamp formattedTime = new Timestamp(formattedDate.getTime());
System.out.println(formattedTime);
} catch (Throwable t){
t.printStackTrace();
}
}
结果对象是:2015-08-10 14:31:59.279
,很明显在解析分、秒和毫秒时出了点问题,我只是不知道具体是什么。
谢谢!
没有像 SSSSSS 这样的东西。 检查 Simple Date Format manual
你必须退出最后 3 毫秒:
Date d = ( new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS", Locale.US) ).parse("2015-08-10-14.20.40.679279");
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.S").format(d));
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SS").format(d));
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS").format(d));
Date dd = ( new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS", Locale.US) ).parse("2015-08-10-14.20.40.679");
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.S").format(dd));
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SS").format(dd));
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS").format(dd));
获得正确的格式:
2015-08-10-14.31.59.279
2015-08-10-14.31.59.279
2015-08-10-14.31.59.279
2015-08-10-14.20.40.679
2015-08-10-14.20.40.679
2015-08-10-14.20.40.679
看看这个 playground。