Java 使用SimpleDataFormat分析到目前为止的字符串

Java 使用SimpleDataFormat分析到目前为止的字符串,java,android,date,simpledateformat,Java,Android,Date,Simpledateformat,我正试图通过SimpleDateFormat将字符串。我知道大多数安卓手机还没有内置,但你可以开始使用它。可能是重复的。 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH); String stringToParse = "Nov 6, 2017 11:47:53 AM"; LocalDateTime dateTime = LocalDat

我正试图通过
SimpleDateFormat
字符串
<2017年11月6日上午11:47:53“解析为
日期
,但我无法找到正确的格式来使用。有人能帮我吗?

使用“mm-dd,yyyy-hh:mm:ss aaa”

输出:


2017年11月6日04:35:20 AM

假设一天中的时间在
1-12
范围内,则应该能够解析此文本的模板是
MMM d,yyyy hh:mm:ss a
。如果它们在
0-11
范围内,则用
KK
替换
hh
,即使在Android上,也值得考虑删除过时很久的类
Date
,尤其是
SimpleDateFormat
,这是相当麻烦的。我建议您使用ThreeTenABP。它将允许您在Android上使用现代Java日期和时间API(对于JSR-310,这是三个十,在这里API是第一次被描述的)

结果是
2017-11-06T11:47:53的
LocalDateTime

如果您确实需要一个老式的
Date
对象来实现某些遗留API,您可以执行以下操作:

    Date oldfashionedDate = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());

关于在中使用ThreTenABP还有更多信息。

请说明您尝试了什么,以及出现了什么错误/问题。你现在要求别人不要帮你,但是,为了代替它,请在这里粘贴一些代码来识别你的问题。给你一个提示:通过搜索现有的问题和答案,你可以更快地找到答案,而不是等待别人键入一个新的答案。我建议你考虑而不是过时的<代码>日期<代码>和<代码> SimpleDateFormat < /代码>。我知道大多数安卓手机还没有内置,但你可以开始使用它。可能是重复的。
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH);
    String stringToParse = "Nov 6, 2017 11:47:53 AM";
    LocalDateTime dateTime = LocalDateTime.parse(stringToParse, dtf);
    Date oldfashionedDate = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());