Chi*_*tel 5 java parsing android date simpledateformat
我正在使用SimpleDateFormat带有Date对象的对象,如下所示.问题在于Date对象显示错误的日期,这与原始字符串相距几分钟.该Date对象似乎以调试器中的总毫秒数存储时间.
关于这个问题的任何想法?
import java.text.SimpleDateFormat;
import java.util.Date;
Date played_at_local;
dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSSSSZ");
played_at_local = dateFormat.parse("2011-04-11T22:27:18.491726-05:00");
//played_at_local shows "Mon Apr 11 22:35:29 America/Chicago 2011" in debugger
Run Code Online (Sandbox Code Playgroud)
Joe*_*Joe 15
尝试从格式字符串中删除小数秒.我刚遇到同样的问题,但格式略有不同.我的输入格式不是ISO格式(没有"T",没有"Z"),但症状是相同的 - 时间被一些随机数分钟和秒关闭,但其他一切都很好.这就是我的日志结果:
使用小数秒格式时:
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
# Parsed date: 2011-05-27 17:11:15.271816 => Fri May 27 17:15:46 EDT 2011
# Parsed date: 2011-05-27 17:09:37.750343 => Fri May 27 17:22:07 EDT 2011
# Parsed date: 2011-05-27 17:05:55.182921 => Fri May 27 17:08:57 EDT 2011
# Parsed date: 2011-05-27 16:55:05.69092 => Fri May 27 16:56:14 EDT 2011
# Parsed date: 2011-05-27 16:38:35.50348 => Fri May 27 16:39:25 EDT 2011
Run Code Online (Sandbox Code Playgroud)
我通过从格式中删除小数秒来修复它.
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
# Parsed date: 2011-05-27 17:11:15.271816 => Fri May 27 17:11:15 EDT 2011
# Parsed date: 2011-05-27 17:09:37.750343 => Fri May 27 17:09:37 EDT 2011
# Parsed date: 2011-05-27 17:05:55.182921 => Fri May 27 17:05:55 EDT 2011
# Parsed date: 2011-05-27 16:55:05.69092 => Fri May 27 16:55:05 EDT 2011
# Parsed date: 2011-05-27 16:38:35.50348 => Fri May 27 16:38:35 EDT 2011
Run Code Online (Sandbox Code Playgroud)
我认为发生的是输入字符串的"小数秒"部分太长(在OP示例中也是如此).它似乎只期望三位小数.如果你做数学(拿第一个例子):
271816 / 1000秒05:00 -->> 0500
和
hh --> HH // error not because of this ,but date is in 24hr format.
played_at_local = dateFormat.parse("2011-04-11T22:27:18.491726-05:00");
Run Code Online (Sandbox Code Playgroud)
应该
played_at_local = dateFormat.parse("2011-04-11T22:27:18.491726-0500");
Run Code Online (Sandbox Code Playgroud)