【发布时间】:2014-01-20 21:43:45
【问题描述】:
我正在尝试转换一个表示存储在 SQLITE 中的日期的字符串。
日期存储到sqlite中如下:
Date date;
date.toString();
根据 Java 文档,toString() 方法:
返回此日期的字符串表示形式。格式是 相当于使用带有格式字符串“EEE MMM”的 SimpleDateFormat dd HH:mm:ss zzz yyyy”,看起来像“Tue Jun 22 13:07:00 PDT 1999"。使用当前的默认时区和语言环境。如果您 需要控制时区或语言环境,使用 SimpleDateFormat 反而。
到这里为止,一切正常,但是当我尝试获取字符串并将其再次转换为日期时,Java 会抛出异常。
字符串来自 sqlite:
Mon Jan 20 18:26:25 BRT 2014
所以,我愿意:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
Date date= sdf.parse("Mon Jan 20 18:26:25 BRT 2014");
我做错了什么?
谢谢。
【问题讨论】:
-
您还没有告诉我们您的期望和实际得到的。
-
还有什么例外?
-
对不起!我需要以这种格式获取日期:“dd/MM/yyyy”。
-
@vitorvigano 顺便说一句,这是在您的数据库中存储日期时间数据的绝对错误的方法。切勿在 java.util.Date 上使用“toString”,除非出于快速和肮脏的目的;当您应该使用 UTC/GMT 时,它使用默认时区,并且它使用 3 个字母的时区代码,这些代码既不是标准化的也不是唯一的。阅读 SQLite doc on data types。使用 SQLite date-time functions 在 ISO 8601 format 中存储和检索,调整为 UTC/GMT(无时区偏移)。
标签: java android sqlite simpledateformat