Java 在Android中将日期格式转换为其他日期?
我正在从服务器获取2011-10-01T21:00:00.0000000-07:00格式的日期。我尝试使用“yyyy-MM-dd'T'HH:MM:ss.SSSZ”这种SimpleDataFormat类格式来转换它。但它总是给我一个异常 有人能告诉我转换它可能有什么问题吗Java 在Android中将日期格式转换为其他日期?,java,android,date,Java,Android,Date,我正在从服务器获取2011-10-01T21:00:00.0000000-07:00格式的日期。我尝试使用“yyyy-MM-dd'T'HH:MM:ss.SSSZ”这种SimpleDataFormat类格式来转换它。但它总是给我一个异常 有人能告诉我转换它可能有什么问题吗 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssSSSSSZ"); Date eventDate = dateFormat.par
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssSSSSSZ");
Date eventDate = dateFormat.parse(date);
上面的代码给出了错误。大写字母S大约需要1到3个字符,而在那里您有7个字符。这可能就是问题所在。如果毫秒不重要,请尝试删除它们。如果你想尝试一些随机的东西,试着在里面放七个S,看看是否有帮助
注意:在上面的代码片段中,您缺少ss和SSSS之间的点,您的格式错误:在字符串
2011-10-01T21:00:00.0000000-07:00中,您的毫秒字节太多。SSS
格式字符串正好需要3个零(毫秒计数不能超过3个有效数字)
检查服务器格式。始终包括完整异常和代码段-最好是一个。我已添加了产生异常的代码段。还添加了异常,包括堆栈跟踪。你认为无关细节对诊断这个问题的人是有用的。(在提交联机帮助时,仔细检查是一个好习惯。)确保您正在解析的日期与您的SimpleDataFormat
模式完全匹配。变量date
包含什么?七个Ss不起作用。我试过了。但是我把你撞了。我同意这可能是问题所在。即使我认为这是问题所在,但这是我从服务器得到的响应。服务器响应在ss和SSS之间没有点,这就是我删除它的原因,但仍然没有成功。“即使我认为这是问题所在”。然后检查答案,然后继续。用java.util.StringTokenizeRall StringTokenize来解决这个问题应该非常简单,我知道并且喜欢它。但是,它已被弃用并替换为String.split(),它接受正则表达式。