文档章节

开发中的时区问题

喻恒春
 喻恒春
发布于 2014/02/10 20:01
字数 410
阅读 246
收藏 3

时区很麻烦

时区 很麻烦, 大概有这么几个问题

 - 历史变更: 这个真的是随历史各个地域变化很大, 看看 wiki 上 中国时区 的历史吧.

 - 夏令时: 基本靠 time 库支持了

 - 数据库支持: 差异很大

 - 客户端: 比如浏览器, 别说你的网站只考虑支持固定时区的用户

两个重要链接 iana.org/tz , worldtimezone , 数据的维护发布就靠他们了.


数据库差异


支持 SQLite3
MySQL PostgreSQL MongoDB
存储时区 可选
时差相关运算/函数
可设定时区
否,只用UTC时间
多种日期格式

注: 本文 把"2012-12-12","2012 12 12","20121212" 当做同一种格式, MongoDB 通过函数完成的,不算多格式支持

格式交换

应用在和第三方进行数据通讯的时候, 可能会遇到多种不同的日期格式,这里面也涉及时区问题. 这需要你看所用语言库的支持了.

应用怎么办

如果你的应用不考虑时区支持, 那对于 MySQL和PostgreSQL来说,只要配置好时区就万事大吉.

否则,你可能遇到:

 - 数据库有可能迁移

 - 随时间推移,应用需要时区支持

 - 返回到客户端日期要符合客户端的时区时间, 你的客户时区分布是如何呢?

综合问题您自己根据应用特性选择吧.




© 著作权归作者所有

共有 人打赏支持
喻恒春

喻恒春

粉丝 106
博文 29
码字总数 21951
作品 5
郑州
程序员
Android中Calendar与Date的区别以及消除时区对日期操作影响的方法

Android中Calendar与Date的区别以及消除时区对日期操作影响的方法 在Android中的日期操作常用的有三种方式,分别是: Date类型 Calendar类型 Unix时间戳 其中,Unix时间戳在计算上最为方便和...

SmilWu
2012/07/08
0
0
Tomcat7.x时区问题导致时间获取不正确

最近在开发中遇到一个非常罕见的问题,就是centos测试服务器上的时间虽然正确,但是安装在上面的Tomacat7.x的时间时区出现错误。 我的程序代码中,恰好使用了对时间查询的sql语句,例如 sele...

gaolu
2014/01/29
0
6
系统开发中的时间类型的处理问题

这两天做了个测试程序放到cloudfoundry上,测试的时候突然发现系统中对日期时间类型的数据处理在云环境下存在问题。 仔细思考以后发现这个问题是一直存在的,只是以前自己做的系统没有考虑到...

chuangyu
2013/05/07
0
0
Bootstrap 3时间控件datetimepicker的时区及多语言问题

文章作者:Tyan 博客:noahsnail.com 在Web应用开发中,特别是前端开发中,经常会碰到的一个问题是时间选择问题,幸好Bootstrap已经为我们提供了时间选择控件datetimepicker,但在datetimep...

Quincuntial
2016/09/09
0
0
Reviewboard时区问题

在创建ReviewBoard站点后发现,Reviewboard时区默认为UTC(服务器时区为+8区,即东八区) 在后台管理界面将时区修改为Asia/Shanghai后,没起什么作用 数据库中的时间是UTC时间 邮件中的时间是...

donhui
2014/09/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows小技巧 – Win+R提高Windows使用效率

追求效率的朋友都需要一款顺手的快速启动工具,Win 平台上有键盘流的RunZ、Listary、ALTRun、Launchy、Wox 和图标流的 Fences、Rolan、 WinLaunch 等,而 Mac 上也有 Alfred、Spotlight。 而...

QQZZFT
2分钟前
0
0
Android 移植ffmpeg报错:"atof" referenced by "libavformat.so"

cannot locate symbol "atof" referenced by "libavformat-57.so"... 原因:android的stdlib.h中atof是内联的, 外部模块不能直接使用。跟android版本有关。 解决办法:将所有的atof改成str...

她叫我小渝
16分钟前
0
0
Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生...

engeue
32分钟前
1
0
php-fpm配置文件详解

第一部分:FPM 配置 参数          | 说明 -p            | 命令行中动态修改--prefix   ;include=etc/fpm.d/*.conf  | 用于包含一个或多个文件,如果glob(3)存在(...

bengozhong
34分钟前
1
0
Django允许外部ip访问

1、关闭防火墙 service iptables stop 2、设置django 开启django时,使用0.0.0.0:xxxx,作为ip和端口例如: python manage.py runserver 0.0.0.0:8000 3、在settings里修改ALLOWED_HOSTS = [......

MichaelShu
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部