Android关于SQLite的日期时间的存储

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android关于SQLite的日期时间的存储脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

最近一直在学习AndROId,由于Xana的Java完全是路出家,以前一直在用C#、C++和Python之类的东西,对于时间和日期的处理,一直没能弄得比较清楚。

说清楚,SQLITe

SQLite中,原始的存储只有以下几种(SQLite文档)

  • NULL。只有null
  • INTEGER。有符号整数,根据值的大小存储在1-4字节中。
  • REAL。浮点数,储存为8字节的IEEE浮点数。
  • TEXT。文字字符串,根据数据库编码存储(UTF-8/UTF-16BE/UTF-16LE)
  • BLOB。纯数据储存。

Android和Java怎么做

Java中,时间和日期相关类主要是以下:

和它的子类:

  • java.sql.Date
  • java.sql.Time
  • java.sql.Timestamp

以及相关的操作类:

  • java.util.Calendar
  • java.util.GregorianCalendar

用哪个?

其中,java.sql下的DateTime分别是“阉割”了的java.util.Date,而java.sql.Timestamp是强化版增加了微秒的java.util.Date,综上所述,一般而言,用java.util.Date即可。

怎么用?

Java中日期和时间都是通过1970年后的毫秒数来储存的,所以,我们在数据库种只需要存储日期时间的毫秒数即可,调用

java.util.Date date = new java.util.Date(); long datetime = date.getTime(); 

数据库可以这么定义:

CREATE TABLE IF NOT EXISTS Journal(     id INTEGER Primary KEY AUTOINCREMENT,     content TEXT,     writeTime INTEGER ); 

这个地方其实我被折腾了很久,因为Java中用long来存储毫秒数,即int64,但SQLite中只有INTEGER,后来看了文档,这里的INTEGER是支持1-4字节,即可以存储long

插入可以这么来:

java.util.Date writeTime = new java.util.Date(); ContentValues values = new ContentValues(); values.put("content", content); values.put("writeTime", writeTime.getTime()); 

按日期查找……WTF?

日期区间查找

由于在数据库内部使用了毫秒的方式储存时间日期,那对于某一个日期,比如2015-07-21这一天的内容如何查找?

其实也就是查找2015-07-21 00:00:00到2015-07-22 00:00:00之间的数值,我们造一个就是了。

首先,获取当前时间

Date now = new Date(); 

将它处理:

GregorianCalendar cal = new GregorianCalendar(); cal.setTime(now); //可以根据需要设置时区 //cal.setTimeZone(TimeZone.getDefault()); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); //毫秒可根据系统需要清除或不清除 cal.set(Calendar.MILLISECOND, 0); long startTime = cal.getTimeinMillis(); 

结束时间加上即可:

long endTime = startTime + 24 * 3600 * 1000; 

现在就可以查询了:

Cursor cursor = db.rawQuery("SELECT * From Journal WHERE “ +     ”writeTime>=? and writeTime<?",     new String[] { String.valueOf(startTime), String.valuesOf(endTime) }); 

脚本宝典总结

以上是脚本宝典为你收集整理的Android关于SQLite的日期时间的存储全部内容,希望文章能够帮你解决Android关于SQLite的日期时间的存储所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。