lon*_*ker 1 java android simpledateformat
我在从字符串解析以下日期时遇到问题:"2014年1月29日上午11:45:00"我按以下方式执行:
String source = "1/29/2014 11:45:00 AM";
Date startDate;
String sdfPattern = "MM/dd/yyyy hh:mm:ss aa";
SimpleDateFormat sdf = new SimpleDateFormat(sdfPattern, Locale.getDefault());
sdf.setTimeZone(TimeZone.getTimeZone("Europe/London"));
this.startDate = sdf.parse(source);
Run Code Online (Sandbox Code Playgroud)
有趣的是,这在java项目中工作得很好,但在android中却没有.我收到的错误消息:
01-15 15:36:46.950: W/System.err(2713): java.text.ParseException: Unparseable date: "1/29/2014 11:45:00 AM" (at offset 19)
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?
您的格式字符串指定您将提供两位数的月份,但您只提供"1".
我怀疑你想要:
String sdfPattern = "M/d/yyyy hh:mm:ss aa";
Run Code Online (Sandbox Code Playgroud)
此外,"AM/PM"指示符对语言环境敏感(日期和时间分隔符也是如此).如果您知道它将始终使用英语,您应该这样说:
SimpleDateFormat sdf = new SimpleDateFormat(sdfPattern, Locale.US);
Run Code Online (Sandbox Code Playgroud)
除非用户实际输入数据(或为用户格式化),否则应避免使用Locale.getDefault()
.
归档时间: |
|
查看次数: |
1784 次 |
最近记录: |