iPhone应用程序中Sqlite时间函数及时间处理

移动开发 iOS
本文主要介绍了iPhone应用程序中Sqlite时间函数及时间处理,主要讲解了Sqlite时间函数及时间处理的表现方式,来看本文内容。

iPhone应用程序中Sqlite时间函数及时间处理是本文要介绍的内容,主要讲解了Sqlite时间函数及时间处理的表现方式,我们来看详细内容。这篇文章是根据 SQLite 官方 WIKI 里的内容翻译,如果有什么翻译不当的地方希望大家指出,毕竟我的英文水平实在很差。SQLite包括以下五个时间函数:

date(日期时间字符串, 修正符, 修正符, ……)

time(日期时间字符串, 修正符, 修正符, ……)

datetime(日期时间字符串, 修正符, 修正符, ……)

julianday(日期时间字符串, 修正符, 修正符, ……)

strftime(日期时间格式, 日期时间字符串, 修正符, 修正符, ……)

上述五个函数需要一个日期时间字符串做参数,后面可以跟零到多个修正符参数。而 strftime() 函数还需要一个日期时间格式字符串做***个参数。

date() 函数返回一个以 “YYYY-MM-DD” 为格式的日期;

time() 函数返回一个以 “YYYY-MM-DD HH:MM:SS” 为格式的日期时间;

julianday() 函数返回一个天数,从格林威治时间公元前4714年11月24号开始算起;

strftime() 函数返回一个经过格式话的日期时间,它可以用下面的符号对日期和时间进行格式化:

  1. %d 一月中的第几天 01-31  
  2. %f 小数形式的秒,SS.SSSS  
  3. %H 小时 00-24  
  4. %j 一年中的第几天 01-366  
  5. %J Julian Day Numbers  
  6. %m 月份 01-12  
  7. %M 分钟 00-59  
  8. %s 从 1970-01-01日开始计算的秒数  
  9. %S 秒 00-59  
  10. %w 星期,0-6,0是星期天  
  11. %W 一年中的第几周 00-53  
  12. %Y 年份 0000-9999  
  13. %% % 百分号 

其他四个函数都可以用 strftime() 函数来表示:

  1. date(…)        ->  strftime(“%Y-%m-%d”,…)  
  2. time(…)        ->  strftime(“%H:%M:%S”,…)  
  3. datetime(…)   ->  strftime(“%Y-%m-%d %H:%M:%S”,…)  
  4. julianday(…)  ->  strftime(“%J”,…) 

日期时间字符串,可以用以下几种格式:

  1. YYYY-MM-DD  
  2. YYYY-MM-DD HH:MM  
  3. YYYY-MM-DD HH:MM:SS  
  4. YYYY-MM-DD HH:MM:SS.SSS  
  5. YYYY-MM-DDTHH:MM  
  6. YYYY-MM-DDTHH:MM:SS  
  7. YYYY-MM-DDTHH:MM:SS.SSS  
  8. HH:MM  
  9. HH:MM:SS  
  10. HH:MM:SS.SSS  
  11. now  
  12. DDDD.DDDD 

在第五种到第七种格式中的“T”是一个分割日期和时间的字符;第八种到第十种格式只代表2000-01-01日的时间,第十一种格式的’now’表示返回一个当前的日期和时间,使用格林威治时间(UTC);第十二种格式表示一个 Julian Day Numbers。

修正符

日期和时间可以使用下面的修正符来更改日期或时间:

  1. NNN days  
  2. NNN hours  
  3. NNN minutes  
  4. NNN.NNNN seconds  
  5. NNN months  
  6. NNN years  
  7. start of month  
  8. start of year  
  9. start of week  
  10. start of day  
  11. weekday N  
  12. unixepoch  
  13. localtime  
  14. utc 

前六个修正符就是简单的增加指定数值的时间和日期;第七到第十个修正符表示返回当前日期的开始;第十一个修正符表示返回下一个星期是N的日期和时间;第十二个修正符表示返回从1970-01-01开始算起的秒数;第十三个修正符表示返回本地时间。

下面举一些例子:

计算机当前时间

  1. SELECT date(‘now’) 

计算机当前月份的***一天

  1. SELECT date(‘now’,’start of month’,’+1 month’,’-1 day’) 

计算UNIX 时间戳1092941466表示的日期和时间

  1. SELECT datetime(‘1092941466’,’unixepoch’) 

计算 UNIX 时间戳1092941466 表示的本地日期和时间

  1. SELECT datetime(‘1092941466’,’unixepoch’,’localtime’) 

计算机当前UNIX 时间戳

  1. SELECT strftime(‘%s’,’now’) 

两个日期之间相差多少天

  1. SELECT jolianday(‘now’)-jolianday(‘1981-12-23’) 

两个日期时间之间相差多少秒

  1. SELECT julianday('now')*86400 - julianday('2004-01-01 02:34:56')*86400 

计算今年十月份***个星期二的日期

  1. SELECT date('now','start of year','+9 months','weekday 2'); 

得到年

  1. strftime(‘%y’,'2008-4-28') 

得到月

  1. strftime(‘%m’,'2008-4-28') 

同样,我们也可以通过strftime来得到其它所要的信息,但是要记得,给时间加引号

  1. 例1.  
  2. select datetime('now');  
  3. 结果:2006-10-17 12:55:54  
  4.  
  5. 例2.  
  6. select datetime('2006-10-17');  
  7. 结果:2006-10-17 12:00:00  
  8.  
  9. 例3.  
  10. select datetime('2006-10-17 00:20:00','+1 hour','-12 minute');  
  11. 结果:2006-10-17 01:08:00  
  12.  
  13. 例4.  
  14. select date('2006-10-17','+1 day','+1 year');  
  15. 结果:2007-10-18  
  16.  
  17. 例5.  
  18. select datetime('now','start of year');  
  19. 结果:2006-01-01 00:00:00  
  20.  
  21. 例6.  
  22. select datetime('now','start of month');  
  23. 结果:2006-10-01 00:00:00  
  24.  
  25. 例7.  
  26. select datetime('now','start of day');  
  27. 结果:2006-10-17 00:00:00  
  28.  
  29. 例8.  
  30. select datetime('now','+10 hour','start of day','+10 hour');  
  31. 结果:2006-10-17 10:00:00  
  32.  
  33. 例9.  
  34. select datetime('now','localtime');  
  35. 结果:2006-10-17 21:21:47  
  36.  
  37. 例10.  
  38. select datetime('now','+8 hour');  
  39. 结果:2006-10-17 21:24:45 

例3中的+1 hour和-12 minute表示可以在基本时间上(datetime函数的***个参数)增加或减少一定时间。

例5中的start of year表示一年开始的时间。

从例8可以看出,尽管第2个参数加上了10个小时,但是却被第3个参数“start of day”把时间归零到00:00:00,随后的第4个参数在00:00:00
的基础上把时间增加了10个小时变成了10:00:00。

例9把格林威治时区转换成本地时区。

例10把格林威治时区转换成东八区。

strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。

strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, ...)

它可以用以下的符号对日期和时间进行格式化:

  1. %d 月份, 01-31  
  2. %f 小数形式的秒,SS.SSS  
  3. %H 小时, 00-23  
  4. %j 算出某一天是该年的第几天,001-366  
  5. %m 月份,00-12  
  6. %M 分钟, 00-59  
  7. %s 从1970年1月1日到现在的秒数  
  8. %S 秒, 00-59  
  9. %w 星期, 0-6 (0是星期天)  
  10. %W 算出某一天属于该年的第几周, 01-53  
  11. %Y 年, YYYY  
  12. %% 百分号 

strftime()的用法举例如下:

  1. 例11.  
  2. select strftime('%Y.%m.%d %H:%M:%S','now','localtime');  
  3. 结果:2006.10.17 21:41:09 

例11用圆点作为日期的分隔附,并把时间转换为当地的时区的时间。

小结:iPhone应用程序中Sqlite时间函数及时间处理的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2009-07-17 10:42:06

Swing应用程序处理函数

2011-07-21 10:47:37

iPhone Cocoa 委托

2011-07-28 13:59:40

iPhone App

2011-08-10 16:57:15

iPhone事件程序包

2018-05-21 08:52:15

Linux应用程序启动时间

2011-04-19 09:19:55

应用程序项目管理

2011-07-26 09:41:23

iPhone xcode Mac OS X

2010-08-27 10:41:41

iPhone核心应用程序

2011-07-20 15:58:58

iPhone 应用程序 生命周期

2011-07-27 17:30:40

iPhone Locate 定位

2011-07-19 14:36:32

iPhone

2011-08-05 13:49:53

iPhone 应用 开发

2011-08-12 14:54:45

iPhone委托

2011-07-21 15:56:32

iPhone 截屏

2011-07-26 11:13:15

iPhone PXL

2011-05-23 17:29:29

JS

2011-07-19 10:42:41

iPhone 应用程序 模型

2012-05-24 15:49:35

HTML5

2011-07-19 11:12:07

iPhone 控制器

2011-07-26 16:33:56

iPhone Delegate
点赞
收藏

51CTO技术栈公众号