下面是在Sqlite中的调用及结果
- SQL code
select datetime(1311761337,'unixepoch','localtime') -- 调用结果:2011-07-27 18:08:57 select datetime(1311761337,'unixepoch') --调用结果:2011-07-27 10:08:57 select datetime(1311761337,'unixepoch','utc') --调用结果:2011-07-27 02:08:57
上述结果中我对datetime(1311761337,'unixepoch','utc') 与datetime(1311761337,'unixepoch')调用理解上有点混淆了,
下面是我用C语言实现的
- C/C++ code
time_t timestamp=1311761337; tm *tmUtc,*tmLocal; tmUtc=gmtime(×tamp); cout<<asctime(tmUtc)<<endl;//结果2011-07-27 10:08:57 对应数据库中datetime(1311761337,'unixepoch')的调用 tmLocal=localtime(×tamp); cout<<asctime(tmLocal)<<endl;//2011-07-27 18:08:57 对应数据库中datetime(1311761337,'unixepoch','localtime')的调用
C语言中的gmtime调用先前认为是与数据库中datetime(1311761337,'unixepoch','utc')调用相对应的,但实际上不是,gmtime调用对应datetime(1311761337,'unixepoch')调用,那么对datetime(1311761337,'unixepoch','utc')调用怎么理解呢?它难道不是应该理解为把本地时间戳转换成UTC时间吗?
------解决方案--------------------
官网有说明的 http://www.sqlite.org/lang_datefunc.html
英文不好,看的头大...
select datetime(1311761337,'unixepoch','utc')
查询utc相对于本地的时间,把本地当为0区,而utc为-8区 ,不知道是不是这个意思
------解决方案--------------------
又重新看了下官方的说明,
localtime假定左边的参数是utc时间,转换为当地时区
而utc假定左边的参数是当地时区,转换为utc时间
"utc" assumes that the string to its left is in the local timezone and adjusts that string to be in UTC.