SQLite日期的获取和存储问题

直接将new Date()存入SQLite中是没有问题的,但调用result.getTimestamp()取出的时候报错

Caused by: java.text.ParseException: Unparseable date: "Fri Jul 26 13:43:02 CST 2024" does not match (\p{Nd}++)\Q-\E(\p{Nd}++)\Q-\E(\p{Nd}++)\Q \E(\p{Nd}++)\Q:\E(\p{Nd}++)\Q:\E(\p{Nd}++)\Q.\E(\p{Nd}++)
    at org.sqlite.date.FastDateParser.parse(FastDateParser.java:299)
    at org.sqlite.date.FastDateFormat.parse(FastDateFormat.java:490)
    at org.sqlite.jdbc3.JDBC3ResultSet.getTimestamp(JDBC3ResultSet.java:532)
    ... 74 more 

点开源码,发现源码中调用了FastDateFormat.parse()方法

构造函数中发现了默认的格式

所以在存入日期的时候也使用这个格式,调用FastDateFormat.format()方法

FastDateFormat dateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss.SSS", Calendar.getInstance().getTimeZone());
String date = dateFormat.format(timestamp);

其他问题:

1. 关于时区的问题:在设置日期格式的时候传入Calendar.getInstance().getTimeZone()可以自动获取当前时区。

2. 关于getDate、getTime、getTimestamp的问题:

        rs.getDate()返回日期部分

        rs.getTime()返回时间部分

        rs.getTimestamp()返回时间和日期

总结:

1.SQLite存入日期前使用FastDateFormat调整格式和时区

2.SQLite获取完整日期调用getTimestamp()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值