文档章节

开发中的时区问题

喻恒春
 喻恒春
发布于 2014/02/10 20:01
字数 410
阅读 205
收藏 3
点赞 0
评论 0

时区很麻烦

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

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

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

 - 数据库支持: 差异很大

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

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


数据库差异


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

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

格式交换

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

应用怎么办

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

否则,你可能遇到:

 - 数据库有可能迁移

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

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

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




© 著作权归作者所有

共有 人打赏支持
喻恒春

喻恒春

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

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

SmilWu ⋅ 2012/07/08 ⋅ 0

Tomcat7.x时区问题导致时间获取不正确

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

gaolu ⋅ 2014/01/29 ⋅ 6

Reviewboard时区问题

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

donhui ⋅ 2014/09/18 ⋅ 0

系统开发中的时间类型的处理问题

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

chuangyu ⋅ 2013/05/07 ⋅ 0

Bootstrap 3时间控件datetimepicker的时区及多语言问题

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

Quincuntial ⋅ 2016/09/09 ⋅ 0

如何解决分布式系统中的跨时区问题[原理篇]

《谈谈你最熟悉的System.DateTime[上篇][下篇]》从跨时区的角度对DateTime这个我们熟知的类型进行了深入探讨,它们都是为这篇文章作的准备工作。在接下来的两篇文章中,我们将完整的介绍如果...

长平狐 ⋅ 2012/09/04 ⋅ 0

如何正确地处理时间

日期和时间在程序中应用广泛,每种程序开发语言都自带处理日期和时间的相关函数,很多开发者把日期和时间存入数据库中,但是,一旦涉及到跨时区的日期和时间的处理时,大多数开发者根本就不明...

Sheamus ⋅ 2015/03/04 ⋅ 0

PHP 关于strtotime("- x month") bug的解决

之前在开发项目时,遇到过用strtotime("- 1 month")会出现bug的情况,主要原因是PHP默认设置的时间是以格林威治时区为标准的,有两种方法解决这个问题,一是在php.ini中修改默认的时区,二是...

黑夜探路人 ⋅ 2016/04/15 ⋅ 0

阿里云 OSS RequestTimeTooSkewed

前言 开发伙伴做oss出现了问题 一看报错发现是时间的问题报错如下 之后我设置了时间 date "2017-09-09 12:35:21" 之后保存 clock -w,但是访问还是有问题,所以改时区。但是还不对只好ntpd了...

我不是九爷 ⋅ 2017/09/08 ⋅ 0

django时区设置问题

最近用Django开发项目,在使用datetime类获取.now()时,获取的时间比实际时间相差8小时左右(感觉是UTC时间),服务器使用的时区是“Asia/Shanghai”(+08:00),最终通过修改django settin...

johnnyky ⋅ 2015/08/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 27分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 32分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 35分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 43分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 46分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 今天 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部