我在将json文件中的日期转换为时间戳时遇到问题。当小时= 12时,返回的时间戳不正确。
Java版本1.8.0_171
使用下面的代码片段,我希望输出为
2017-07-19 07:43:42.0
2017-07-18 08:43:42.0
2017-07-19 09:43:42.0
相反,我得到
2017-07-18 20:43:42.0
我在2台机器上尝试过,并让一位同事运行它,结果相同。我可能正在盯着它
import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Locale; import org.apache.commons.lang3.StringUtils; public class TimestampTest { public static void main(String[] args) { String input = "2017-07-19T11:43:42.000+0000"; System.out.println(stringToTimestamp(input)); input = "2017-07-19T12:43:42.000+0000"; System.out.println(stringToTimestamp(input)); input = "2017-07-19T13:43:42.000+0000"; System.out.println(stringToTimestamp(input)); } private static Timestamp stringToTimestamp(String input) { try { if(StringUtils.isBlank(input)) { return null; } SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ", Locale.getDefault()); java.util.Date parsedDate = dateFormat.parse(input); Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime()); return timestamp; } catch (Exception e) { e.printStackTrace(); } return null; } }
除了您不应该使用Date或不再使用之外SimpleDateFormat,您的错误还因为您使用hh而不是HH
Date
SimpleDateFormat
hh
HH
h->小时(上午/下午)(1-12) H->每小时(0-23)
h->小时(上午/下午)(1-12)
H->每小时(0-23)
考虑在您的情况下使用LocalDateTime。