java - 如何将 "Nov 17, 2016 7:26:57 PM"形式的日期字符串解析为日期?

标签 java string date parsing

我尝试了以下模式 new SimpleDateFormat(pattern).parse("Nov 17, 2016 7:26:57 PM")但它们都不起作用:

MMM d, yyyy h:m:s a
MMM dd, yyyy HH:mm:ss a
MMM dd, yyyy h:m:s a

成功解析该字符串的唯一方法是使用 new Date("Nov 17, 2016 7:26:57 PM")但这个电话已经过时了。据说被DateFormat.parse()取代根据API文档,但实际上当我调用 DateFormat.getDateTimeInstance().parse("Nov 17, 2016 7:26:57 PM") 时它无法解析相同的字符串。那么除了使用 new Date() 之外我应该如何正确解析这个字符串?

最佳答案

您需要:

  • 确保模式正确
  • 指定正确的区域设置

在本例中,您需要英语月份名称的英语区域设置:

SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy h:mm:ss a", Locale.ENGLISH);

请注意,此模式不是您指定的任何模式:

  • 我们需要 d 因为您可能会得到“Nov 5”而不是“Nov 05”
  • 我们需要 h,因为您得到的是 12 小时制,小于 10 的值只有一位数字
  • 我们需要 mmss,因为您会得到两位数的分钟和秒

关于java - 如何将 "Nov 17, 2016 7:26:57 PM"形式的日期字符串解析为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40805050/

相关文章:

java - 服务器在客户端断开连接后收到消息

python - 可选的结束符号和使用正则表达式捕获的几个单词

xml 模式更改日期格式

java - 日历类在不同设备上给出不同的日期

tomcat - Logrotate 文件名中包含日期的文件

java - Hibernate 插件不可用

java 。如何在循环中添加原始值 - (for)

带有增量运算符的java循环示例

java - 根据字符数向字符串添加新行

php - 代数项的字符串串联