Java 当前日期时间使用Strftime错误

Java 当前日期时间使用Strftime错误,java,android,sql,datetime,gmt,Java,Android,Sql,Datetime,Gmt,在我的android应用程序中,我使用STRFTIME函数通过比较不同的日期字符串从SQLite获取数据 我将促销StartDate和EndDate分别设置为2013-10-07和2013-12-31。当当前日期时间介于StartDate和EndDate之间时,存在促销 以下是有效strftime()替换的完整列表: %d day of month: 00 %f fractional seconds: SS.SSS %H hour: 00-24 %j

在我的android应用程序中,我使用STRFTIME函数通过比较不同的日期字符串从SQLite获取数据

我将促销
StartDate
EndDate
分别设置为
2013-10-07
2013-12-31
。当当前日期时间介于
StartDate
EndDate
之间时,存在促销

以下是有效strftime()替换的完整列表:

%d       day of month: 00
%f       fractional seconds: SS.SSS
%H       hour: 00-24
%j       day of year: 001-366
%J       Julian day number
%m       month: 01-12
%M       minute: 00-59
%s       seconds since 1970-01-01
%S       seconds: 00-59
%w       day of week 0-6 with Sunday==0
%W       week of year: 00-53
%Y       year: 0000-9999=
我使用下面的查询来检索数据

Select * From Sal_Promotion p, Sal_Promotion_CustomerTypeAndProduct pd 
Where p.Sal_PromotionID = d.Sal_PromotionID and 
strftime('%s','now') >= strftime('%s',Sal_StartDate) and 
strftime('%s','now') = strftime('%s',Sal_EndDate) and 
Sal_CustomerTypeID = customerTypeID and 
p.Sal_PromotionID = promoID;
当我在2013年10月7日上午7点测试我的应用程序时,我得到以下输出

输出:

起始日期:2013-10-07 00:00:00(数值:1381104000)

截止日期:2013-12-31 00:00:00(价值:1388448000)

当前日期时间:2013-10-07 07:00:00(值:1381100400)

CurrentDateTime值应介于StartDate和EndDate之间。但为什么这个值是错误的呢?当前日期时间比StartDate晚3600秒(1小时)

我现在的城市是新加坡(GMT+8:00)。是因为时区不同吗


有人能告诉我问题出在哪里吗?

时区偏移是你的问题。SQLite3日期和时间函数默认为UTC

一种解决方案是直接比较日期字符串

date('now') >= Sal_StartDate and date('now) <= Sal_EndDate

date('now')>=Sal_StartDate和date('now)时区偏移是您的问题。SQLite3日期和时间函数默认为UTC

一种解决方案是直接比较日期字符串

date('now') >= Sal_StartDate and date('now) <= Sal_EndDate

date('now')>=Sal_StartDate和date('now')在您上面提供的链接中,用于获取本地时区<代码>选择日期时间(1092941466,'unixepoch','localtime')所以,我通过这种方式转换为当前本地日期时间<代码>选择日期时间(strftime('%s','now'),'unixepoch','localtime')
。感谢您的帮助。您可以使用
datetime('now','localtime')
在上面提供的链接中简化此操作,该链接用于获取本地时区<代码>选择日期时间(1092941466,'unixepoch','localtime')所以,我通过这种方式转换为当前本地日期时间<代码>选择日期时间(strftime('%s','now'),'unixepoch','localtime')
。感谢您的帮助。您可以使用
datetime('now','localtime')简化此过程。