【发布时间】:2016-07-04 16:32:25
【问题描述】:
在将给定字符串解析为时间戳时遇到问题。 毫秒解析错误,或者如果我遗漏了什么,请告诉我。
我从请求中得到一个字符串:
String selectedTimeStamp = request.getParameter("selectTime");
System.out.println("selectedTimeStamp: "+selectedTimeStamp);
然后我使用 simpleDateFormat 来解析和格式化字符串:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US);
Date parsedDate = sdf.parse(selectedTimeStamp);
Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
System.out.println("createdTime: " +timestamp);
我得到的输出是:
selectedTimeStamp: 2016-07-04 21:09:47.66
createdTime: 2016-07-04 21:09:47.066
不确定为什么毫秒从 66 转换为 066 ?应该是660 有什么想法吗?
【问题讨论】:
-
因为
SSS的意思是毫秒,所以66被解析为66毫秒。 -
新的 Java 8 时间 API 将
SSS解释为秒的分数,因此它可以更好地处理.66输入,只要指定的模式SS,而不是SSS.