【问题标题】:Parsing Date and storing it in SQLite database解析日期并将其存储在 SQLite 数据库中
【发布时间】:2011-05-07 16:41:46
【问题描述】:

我正在使用 SAXParser 解析一个 xml 文件,并在处理程序中创建对象,其中一个数据成员是日期。

我的 XML 文件中的日期格式如下:2010-12-28

我找不到如何将这样的字符串转换为 Date 对象。而且我也不明白如何将它存储在 SQLite 数据库中,因为似乎有很多格式(带有小时/分钟/等的格式)

我需要将它存储在一个对象中,以便计算时间跨度等。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: android sqlite date


    【解决方案1】:

    您可以使用 Java 的简单日期格式将您的日期格式化为 Date 对象,您可以使用该对象进行计算等:

    http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

    你想要的解析字符串是"yyyy'-'MM'-'dd"

    至于将其存储到 SQLite 数据库中,您有两种选择:

    • 将其存储为字符串,并在出现时将其转换回日期对象
    • (首选) 将其存储为 unix 时间戳(Date.getTime() 为您提供自 1970 年以来的毫秒数,您可以将该值存储在数据库中。)这种方式是首选,因为您没有进行如此多(相对昂贵)的转换。您可以对long 时间戳值进行简单的基本操作。

    还有一些其他选项可以使用 SQLite 的内置日期函数(如 here 所述),但最终如果您想将其拉入 Android/Java 代码并将其作为 Date 对象进行操作不必进行转换。

    【讨论】:

    • SQLite 中的时间戳应该使用什么数据类型,只需text?
    • @Sled 如果您选择第一个选项,您将使用text。但是,首选选项是使用 unix 时间戳交易,在这种情况下,您将使用 integer(可以保存 Java long 值)
    • 好的,谢谢,我选择了首选选项并使用整数。最后一个问题:是否有任何课程可以帮助计算日期等?我想做一些事情,比如看看日期是否已经过去等等。
    • Date 类对它进行了很多操作,一个是 compareTo,你可以将它与另一个日期进行比较。您可以检查 compareTo 的返回值以确定日期是否已过——例如 if(olderDate.compareDate(newerDate) < 0)
    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多