Android中的解析异常

Android中的解析异常,android,datetime,date-format,simpledateformat,Android,Datetime,Date Format,Simpledateformat,我使用SimpleDateFormat类解析日期,如下所示: SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.text.ParseException: Unparseable date: "2015-09-16 10:21 AM" (at offset 16) 但是,获取解析异常错误如下所示: SimpleDateFormat formatter = new SimpleDateFo

我使用
SimpleDateFormat
类解析日期,如下所示:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.text.ParseException: Unparseable date: "2015-09-16 10:21 AM" (at offset 16)
但是,获取解析异常错误如下所示:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.text.ParseException: Unparseable date: "2015-09-16 10:21 AM" (at offset 16)
我已经检查了另一种格式作为
SimpleDataFormat
类中的参数: “yyyy-MM-dd HH:MM:ss a”但是,仍然会出现相同的错误


是否有其他日期时间格式必须作为
SimpleDataFormat
类的参数传递

TimePicker
小部件不提供年-月-日,它只提供小时和分钟

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");

要获取年-月-日,您必须使用
日期选择器
小部件

如果您的输入没有第二个值,请尝试此操作

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm a");
如果它还有第二个值,那么使用这个

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
否则超过1


正如您在上面的评论中所说,您可以使用
时间选择器来选择日期时间并对其进行解析。你说你还想要第二个。但是显然,
TimePicker
不包括第二个。那么你怎么知道用户想要什么样的秒数呢?我猜是0。您可以将字符串插入正确的位置以使其正常工作。在这种情况下,应在索引16中插入“:00”。只需使用
StringBuilder

StringBuilder builder = new StringBuilder("2015-09-16 10:21 AM");
builder.insert (16, ":00");

可能您的示例输入中没有
:ss
?是的,因为我使用了TimePicker获取输入。请参阅它是否有帮助如果您使用TimePicker小部件,它将只提供时间,而不提供年、月、日使用SimpleDataFormat formatter=new SimpleDataFormat(“HH:mm a”);要获得年、月和日,您必须使用DatePicker。您是对的,我还使用DatePicker并将日期值存储在日期字段中,使用TimePicker将时间存储在数据库的时间字段中,并在从数据库检索时将这两个值组合在一起。感谢您的努力。如果您的输入没有秒,您如何解析秒数?如果没有
:ss
,秒数将默认为0。不需要在数据中插入
:00
,在模式中插入
:ss
,除非模式在其他地方也使用秒输入。@headuck Well yes。。。你是对的。但如果插入字符串,则秒数不限于0。