在一次处理美国的网站时,时期格式为Dec 8, 2016。我们知道Dec这种表示月份的需要用MMM表示,于是我用一下代码解析这个时间
new SimpleDateFormat("MMM d, yyyy").parse(s)
谁知运行居然出错。为什么会出错呢?在确认格式没写错后,最后我意识到应该是Locale导致的问题,我的Locale是zh_CN。于是我改成这样:
new SimpleDateFormat("MMM d, yyyy", Locale.US).parse(s)
果然没问题了。
那么MMM在中文里显示为什么呢?试着写了下面的测试代码:
new SimpleDateFormat("MMM d, yyyy").format(new Date())
运行后显示为:
十一月 8, 2017
这个问题说明,日期格式和Locale还是有关系的。只是我们一般用2017-08-28这样的纯数字表示日期,不会碰到问题而已。