3 回答
TA贡献1993条经验 获得超5个赞
Java 8答案(以及Java 6和7)(因为在2015年提出此问题时,SimpleDateFormat已经替换掉了):
DateTimeFormatter parseFormatter = DateTimeFormatter
.ofPattern("MMM d['st']['nd']['rd']['th'] uuuu h:mma", Locale.ENGLISH);
LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, parseFormatter);
根据问题的样本日期,得出:
2015-02-13T09:00
在格式模式中,[]表示可选部分,并''表示文字部分。所以图案说,数字可以跟随st,nd,rd或th。
要在Java 6或7中使用它,您需要ThreeTen Backport。或适用于Android ThreeTenABP。
由于这些后缀专用于英语,并且其他语言/语言环境在书写日期和时间方面也有其他用法(它们也不使用AM / PM),因此我相信除非您有其他要求,否则应尝试将其实现为仅英文日期和时间。另外,您应该明确指定英语为英语的语言环境,这样它将独立于计算机或JVM的语言环境设置而工作。
我试图将雨果和我本人的最佳答案组合成一个重复的问题。在那个重复的问题下,还有更多的Java 8答案。上面的代码的局限性在于它没有非常严格的验证:您Feb 13rd甚至可以避免使用甚至Feb 13stndrdth。
添加回答
举报