Java' SimpleDateFormat 错误地解析日期

Java' SimpleDateFormat parsing dates incorrectly

我正在尝试使用 "yyyymmddHHssmm" 格式解析时间戳。 我有两个这样的时间戳:

String timeStamp1 = "20190612221303"//this means 12June2019 10:13:03pm
String timeStamp2 = "20190512222303"//this means 12May2019 10:23:03pm

所以我尝试使用以下方法将这些时间戳字符串转换为 java 日期:

Date date1= new SimpleDateFormat("yyyymmddHHssmm").parse(timeStamp1);
Date date2 = new SimpleDateFormat("yyyymmddHHssmm").parse(timeStamp2);

很明显,当我做

System.out.println(date1.getTime() > date2.getTime());

我希望上面的语句打印正确。 但可惜它打印错误。

接口 Date 的 .getTime() 为 date1 打印 1547310793000,为 date2 打印 1547310803000,这显然是不正确的。 有人能指出这里发生了什么吗。

在格式字符串中,您有两次 mmyyyymmddHHssmm。第一次出现应该是 MM, for month of year.

您传递给 SimpleDateFormat 的字符串应该是 yyyyMMddHHmmss 。看看这里哪个字母代表那个格式化程序中的哪个东西。 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

您的格式 used:yyyymmddHHssmm 不明确。

我相信第 5 个和第 6 个字符用于定义月份。 为此使用大写的 MM。

你用的是小mm,表示分钟

发生的事情是您正在使用

m   Minute in hour 

你的时间戳正在用日期解析

Sat Jan 12 22:03:13 Date1
Sat Jan 12 22:03:23 Date2

您需要使用

M   Month in year 

documentation

中查看更多内容