【发布时间】:2013-06-25 22:22:09
【问题描述】:
我在使用 joda-time 格式化 Parse (parse.com) 存储在 sqlite 表中的日期时间字符串时遇到问题。
Sqlite 创建字符串:"createdDate date time"
将解析日期存储到表中:"insert... parseObject.getCreatedAt()"
如果我随后使用 SQLite 浏览器检查表,我会看到这样存储的日期:
2013 年 6 月 15 日星期六 15:44:52 PDT
因此,我编写了以下代码以将其转换回 DateTime 对象,以作为查询的一部分进行解析,以获取比上次插入我的表中的项目更新的项目:
DateTimeFormatter format = DatetimeFormat.forPattern("yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'");
DateTime dt = formatter.parseDateTime(datahelper.getLastInsertDate(..));
格式化程序是这样的,因为在 Parse 的数据浏览器中,我可以看到 dateTimes 是这样存储的:
2013-06-24T08:11:45.280Z
我得到了一个 ANR,所以我尝试使用以下格式化程序:
DateTimeFormatter format = DatetimeFormat.forPattern("EEE' 'MMM' 'dd' 'HH':'mm':'ss 'z'' 'YYYY");
DateTime dt = formatter.parseDateTime(datahelper.getLastInsertDate(..));
我仍然收到 ANR。 eclipse中的trace显示如下:
原因:java.lang.IllegalArgumentException:无效格式:“Tue Jun 25 00:13:29 PDT 2013” 在 org.joda.time.format.DateTimeFormatter.parseDateTime"
第二个 ANR 跟踪显示:
格式无效:“Tue Jun 25 00:13:29 PDT 2013”在“PDT”处格式不正确 2013"
我已经尝试过解决这个问题,因为 joda time 不会将“z”解析为 PDT/PST,所以我将“PDT”放入我的格式化程序中,希望它能够正常工作,但似乎没有任何效果。
有什么想法吗?
编辑 1:使用接受的答案,我有一个时区格式问题)
DateFormat originalFormat = new SimpleDateFormat("EEE MMM DDD HH:mm:ss z yyyy");
Date originaldate = originalFormat.parse(datahelper.getLastInsertdate);
Log.i("converted date: ", String.valueOf(originalDate);
Log.i("a real date: ", "String.valueOf(new Date(new Date().getTime)));
我得到两个输出:
2013 年 1 月 25 日星期五 15:14:11 PST
2013 年 6 月 25 日星期二 17:11:44 PDT
为什么转换后的日期显示 PST,而标准日期显示 PDT?
【问题讨论】:
-
您检查或尝试过吗? stackoverflow.com/questions/1525932/…
标签: android parsing jodatime datetime-format