我尝试了以下模式 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 的值只有一位数字 - 我们需要
mm
和ss
,因为您会得到两位数的分钟和秒
关于java - 如何将 "Nov 17, 2016 7:26:57 PM"形式的日期字符串解析为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40805050/