在Android中将日期格式转换为另一个日期?
Posted
技术标签:
【中文标题】在Android中将日期格式转换为另一个日期?【英文标题】:Convert date format to another date in Android? 【发布时间】:2011-08-07 19:40:56 【问题描述】:我从服务器获取 2011-10-01T21:00:00.0000000-07:00 格式的日期。我尝试使用“yyyy-MM-dd'T'HH:mm:ss.SSSZ”这种格式的 SimpleDateFormat 类来转换它。但它总是给我解析器异常。
谁能告诉我转换它可能有什么问题?
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssSSSSSZ");
Date eventDate = dateFormat.parse(date);
上面的代码给出了错误。
【问题讨论】:
始终包含完整的异常和代码 sn-p - 最好是 SSCCE。 我添加了给出异常的代码 sn-p。 也添加异常,包括堆栈跟踪。您认为不相关的细节可能对诊断问题的人有用。 (提交在线帮助时要彻底是一个好习惯。) 确保您解析的日期与您的SimpleDateFormat
模式完全匹配。
变量date
包含什么?
【参考方案1】:
大写字母 S 大约需要 1 到 3 个字符,而那里有 7 个字符。这大概就是问题所在。如果毫秒不重要,请尝试删除它们。如果您想随机尝试一些东西,请尝试在其中放入七个 S,看看是否有帮助。
附:在上面的代码 sn-p 中,您缺少 ss 和 SSSS 之间的点
【讨论】:
七 Ss 不起作用。刚试了一下。不过,把你撞了。我同意这可能是问题所在。 即使我认为这是问题所在,但这是我从服务器得到的响应。 服务器响应在 ss 和 SSS 之间也没有点,这就是我删除它的原因,但仍然没有成功。 “即使我认为这是问题所在”。然后检查答案并继续前进。用 java.util.StringTokenizer 分解它应该很简单 Earl StringTokenize 我知道并且喜欢。但是它已被弃用并替换为采用正则表达式的 String.split()。【参考方案2】:您的格式错误:在字符串2011-10-01T21:00:00.0000000-07:00
中有太多毫秒字节。 SSS
格式字符串需要正好 3 个零(毫秒计数不能超过 3 个有效数字)。
检查服务器格式。
【讨论】:
以上是关于在Android中将日期格式转换为另一个日期?的主要内容,如果未能解决你的问题,请参考以下文章