时区处理总结

我司业务分布在跨时区的多个国家,我在日常积累了较多的时区处理经验,在此分享一下

首先基本概念,时间分为2种

  1. datetime,这是给人读的时间,分时区。如2000-1-1 12:00:00 gmt
  2. timestamp,这是unix时间戳,从1970-1-1开始的秒数,之前为负数。全球统一,无时区。如1495079384

时间戳和时间的相互关系

  1. 全球时间戳是一样的,比如1495079384在哪里都是这个值,只不过它在北京时区是2017/5/18 11:49:44,而在莫斯科时区却是2017/5/18 06:49:44
  2. 时间和时间戳可以相互转化,都依赖时区。比如上面莫斯科在utc+3而北京在utc+8,所以莫斯科比北京慢5个小时

数据统计的影响

  1. 时区对数据影响是很大的,尤其涉及到数据分析时,需要小心处理时区。各种数据库都有相应的转换方法
  2. 举个例子。比如收入表,入库时间字段timer是utc时间(如:2015-1-1 12:15:11),而你要统计莫斯科2015-1-2的一天的收入。那么直接where timer between '2015-1-2' and '2015-1-3'所得到的结果,是有问题。因为莫斯科比utc快3个小时,所以这个结果实际统计的是莫斯科1-2日3点开始到1-3日3点结束的时间短,结果比真实数据少了3小时当天,并多了3小时第二天的。
  3. 正确的做法,是在where里将timer转为莫斯科时间,如 where timer at time zone 'utc+3' between ... and ... (in postgre sql)

服务器api处理

  1. 个人建议,api里所有时间参数,统一用timestamp,可以毫秒也可以秒。这样不用考虑时区,适合全球化部署。而且时间戳比时间,在格式上更容易处理
  2. 如果一定要用时间来传参和入库,建议统一用utc

浏览器javascript的处理

  1. 所有form input组件,无论h5原生的input type=datetime-local还是datepicker,时间就是字面量。比如输入了2000-1-1 10:00,拿这个value就是这个本身,没有时区
  2. 用new Date来生成时间戳,如new Date('2000-1-1 10:00').getTime()  这个结果跟你打开浏览器的时区有关。不同的时区,执行结果是不同的。跟服务器位置无关,因为js是客户端执行

转载于:https://www.cnblogs.com/elsonwe/p/6874135.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python彩色螺旋线_解决python彩色螺旋线绘制引发的问题

彩色螺旋线的绘制代码如下: import turtle import time turtle.pensize(2) turtle.bgcolor(black) colors [red, yellow, purple, blue] turtle.tracer(False) for x in range(400): turtle.forward(2*x) turtle.color(colors[x % 4]) turtle.left(91) turtle.trac…

matlab中的logspace,matlab中的logspace(a,b,n)究竟怎么理解,看下例题,谁能详细解给我看...

matlab中的logspace(a,b,n)究竟怎么理解,看下例题,谁能详细解给我看来源:互联网 宽屏版 评论2009-12-07 10:11:30分类: 教育/科学 >> 学习帮助问题描述:vec2logspace(0,10,6)的答案为什么是1.0e010 * 0.0000 0.0000 0.000…

ID3和C4.5分类决策树算法 - 数据挖掘算法(7)

(2017-05-18 银河统计)决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干&#xff0c…

mysql 聚簇索引和非聚簇索引_图文并茂,说说MySQL索引

点击上方 小伟后端笔记 ,选择 星标 公众号重磅资讯、干货,第一时间送达作者:小小木的博客来源:cnblogs.com/wyc1994666/p/10831039.html序开门见山,直接上图,下面的思维导图即是现在要讲的内容,…

mysql数据库日志截断,MySQL基础(十一):查询截取分析

下面是小凰凰的简介,看下吧!💗人生态度:珍惜时间,渴望学习,热爱音乐,把握命运,享受生活💗学习技能:网络 -> 云计算运维 -> python全栈( 当前正在学习中…

component是什么接口_阿里高级技术专家:整洁的应用架构“长”什么样?

很多同学不止一次和我反馈,我们的系统很混乱,主要表现在:应用的层次结构混乱:不知道应用应该如何分层、应该包含哪些组件、组件之间的关系是什么;缺少规范的指导和约束:新加一段业务逻辑不知道放在什么地方…

php把1拆分成三份,【php】位运算如何拆分

举例,比如说下面可以组合成71|2|4; // 7那么比如我给一个15,怎么拆分成:1、2、4、8,或者是任意其他数,怎么进行拆分回答不熟悉php。可以先确定这个数占多少位,比如64或者32等。然后再左移位,按位…

20155202 实验四 Android开发基础

20155202 实验四 Android开发基础 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android、组件、布局管理器的使用; 3.掌握Android中事件处理机制。 实验要求 第24章:初识Android任务一:完成Hello World…

死信队列和延迟队列_在实践中使用延迟队列

死信队列和延迟队列通常,在某些情况下,当您有某种工作或作业队列时,有必要不立即处理每个工作项或作业,而是要延迟一些时间。 例如,如果用户单击一个按钮来触发要完成的某项工作,而一秒钟后,用户…

python的代码在哪写_python代码在哪里编写

编写python代码,可以在自带的ide中写,也可以使用第三方编辑器,下面介绍几款常见的python IDE 1. VimVim 可以说是 Python 最好的 IDE。Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器‘Vi’功能,支持更多更完善的特…

nio框架中的多个Selector结构

随着并发数量的提高,传统nio框架采用一个Selector来支撑大量连接事件的管理和触发已经遇到瓶颈,因此现在各种nio框架的新版本都采用多个Selector并存的结构,由多个Selector均衡地去管理大量连接。这里以Mina和Grizzly的实现为例。 在Mina 2…

js 编码 php解码,浅谈php和js中json的编码和解码

php中1)编码$jsonStr json_encode($array)2)解码$arr json_decode($jsonStr)echo json_encode("中文", JSON_UNESCAPED_UNICODE);添加参数:JSON_UNESCAPED_UNICODE即可。测试环境:PHP Version 5.5.36js中1. 编码var str obj.toJSONString()…

如果您在2015年编写过Java代码-这是您不容错过的趋势

去年我们有机会遇到的最有趣趋势的实用概述 在这篇文章中,我们将回顾构成我们2015年对话的5个主题和新发展。与其他许多年终总结保持较高水平的不同,我们将做一个更实际的操作不用流行语 。 好吧,没有太多*流行语。 与往常一样,对…

mel滤波器组频率响应曲线_了解二阶滤波器的奈奎斯特图

在之前的文章中,我介绍了奈奎斯特图,然后我们通过检查奈奎斯特曲线和截止频率与一阶无源滤波器之间的关系,更详细地探索了这些类型的图。在本文中,我们将查看二阶滤波器的奈奎斯特图。二阶过滤器当我说“二阶”滤波器时&#xff0…

CJOJ 免费航班

Description 小Z在MOI比赛中获得了大奖,奖品是一张特殊的机 票。使用这张机票,可以在任意一个国家内的任意城市之间的免费飞行,只有跨国飞行时才会有额外的费用。小Z获得了一张地图,地图上有城市之间的飞机航班和 费用。已知从每个…

java perl5compiler,Java中正则表达式使用方法详解(四)

3.2 HTML处理实例一下面一个任务是分析HTML页面内FONT标记的所有属性。HTML页面内典型的FONT标记如下所示程序将按照如下形式,输出每一个FONT标记的属性在这种情况下,我建议你使用两个正则表达式。第一个如图十一所示,它从字体标记提取出“&q…

java 缓存接口,java项目中,针对缓存问题的处理方式【接口中的处理方式】

1、在service包中,分别建立了关于缓存的一系列的接口、类等,封装到一个工具包中;临时缓存的接口(代码部分):packagecom.tools;importjava.util.Date;public interfaceCacheTemplet {//设置添加永久缓存,(缓存唯一索引,…

【hh】我胡汉三又回来了

hh 差不多半年没来机房了,高一的都已经碾压我100题了 开始得比较晚,估计比高一的早两三个月吧,停了这半年落下了不少。 但是没有关系啊,学OI纯粹是好玩嘛,一开始报名的时候根本不知道有联赛这回事(其实报名…

python爬取知乎标题_python爬虫 爬取知乎文章标题及评论

目的:学习笔记2.首先我们试着爬取下来一篇文章的评论,通过搜索发现在 response里面我们并没有匹配到评论,说明评论是动态加载的。3.此时我们清空请求,收起评论,再次打开评论 4.完成上面操作后,我们选择XHR&…

php curl 要安装pear,MacOS 安装pear

1、下载Pearcurl -O https://pear.php.net/go-pear.phar2、安装Pearsudo php -d detect_unicode0 go-pear.phar安装过程需要进行简单的配置,如下Below is a suggested file layout for your new PEAR installation. Tochange individual locations, type the number…