解析日期时间字符串中日期的序号指示符(st,nd,rd,th)

我检查了SimpleDateFormatjavadoc,但无法找到一种解析日期格式的序号指示器的方法,如下所示:


 Feb 13th 2015 9:00AM

我试过了"MMM dd yyyy hh:mma",但是天数必须正确才能正确?


是否可以使用a解析“ 13th”日期SimpleDateFormat而不必截断字符串?


qq_遁去的一_1
浏览 2069回答 3
3回答

ibeautiful

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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java