Java 的 SimpleDateFormat 解析日期不正确

我正在尝试使用“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());

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


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


慕姐8265434
浏览 287回答 4
4回答

牧羊人nacy

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

翻过高山走不出你

发生的事情是你正在使用m   Minute in hour你的时间戳正在用日期解析Sat Jan 12 22:03:13 Date1 Sat Jan 12 22:03:23 Date2你需要使用M   Month in year在文档中查看更多内容

达令说

您使用的格式:yyyymmddHHssmm 不明确。我相信第 5 个和第 6 个字符用于定义月份。为此使用大写的 MM。你用的是small mm,意思是分钟

蛊毒传说

传递给 SimpleDateFormat 的字符串应该是yyyyMMddHHmmss. 看看这里哪个字母代表那个格式化程序中的哪个东西。https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java