做多了国际化项目,你怎么处理时区不同的各种blabla...问题
我们做的的都是国际化大项目,今天发现了个大bug,没错!是时区不同引起的,如果你觉得这还不简单,这样,这样,再这样不就可以了吗?我只能呵呵了。
先来普及一下基础知识 :
1、地球分为24时区,北京位于东八区,伦敦位于零时区,东京位于东九区,北京8点时,东京9点,伦敦0点。也就是北京比伦敦早8个小时,东京比北京早1个小时。
2、时间戳:可以理解为时间间距,定义为格林威治时间1970年01月01日00时00分00秒,也就是你在伦敦当前时间戳为:从1970年01月01日00时00分00秒到现在再转化为毫秒,如果在北京的话:从1970年01月01日08时00分00秒到现在再转化为毫秒。但是其实是一样的,因为间距不变啊。放张大图自己领会。。。

案例:设备聚合数据端在伦敦,上传到监控系统,监控系统也就是我们的项目在北京。用户A伦敦,用户B在东京。现在时间分为:设备端、browser端,和sever端
场景一:用户A在2017/8/4 00:00:00(伦敦的)和用户B 在2017/8/4 9:00:00(东京的)上线,我在北京查询用户A和用户B的上线时间。
分析:其实A和B是同时上线的,无论是按照设备端,还是browser端。如果系统按照browser端时间设置,我将看到A和B在北京时间2017/8/4 08:00:00同时上线。如果系统按照设备端,我将看到A和B在伦敦时间2017/8/4 00:00:00同时上线.。。。这个比较好理解。
场景二:我在北京2017/8/4 08:00:00查询用户A近24小时的流量数据。
分析:同样,我想知道的是北京时间往前推24小时的流量,那到了伦敦也同样是伦敦时间往前推24小时,设备聚合伦敦近24小时数据量,是可以的。也就是无论安照设备端还是browser端显示都是可以的。
场景三:我在北京2017/8/4 07:00:00查询用户A近1/7/30天的流量数据。(数据聚合都是在每天的零点)
分析:这样按照前面两种就会出现问题:北京时间8/4 07:00:00近一天的也就是8/3 00:00:00到8/4 00:00:00,那到了伦敦当前时间为8/3 23:00:00,近一天的也就是8/2 00:00:00到8/3 00:00:00,这样的话,统计时间的开始时间和结束时间根本不对应啊。统计时间应该为伦敦轴下方的那一段。也就是放张大图,自己领会。。。

那怎么办呢?这样的话,我们只能按照设备端时间查询显示,没办法啊,因为如果按照browser端的00:00:00,那设备端为16:00:00数据还没有聚合。
做多了国际化项目,你怎么处理时区不同的各种blabla...问题的更多相关文章
- 参与国际化项目需遵循的java命名规范
		笔者最近帮助一些朋友应聘远程工作(一般都是一些国外的项目),国外的项目负责人一般都会要求提供github账号或者一些源代码,很多朋友在这一关就被筛选掉了,其中不乏一些我认为技术非常厉害的行业大牛,他们 ... 
- BIP_开发案例10_BI Publisher报表国际化多语言的实现(案例)
		2014-12-26 Created By BaoXinjian 
- [原创]Java项目统一UTC时间方案
		Java项目统一UTC时间方案 作者:Gods_巨蚁 引言 近期团队的个别项目在进行框架升级后,部分时间值存在8小时误差,原因是错误的将数据库中的时间数据理解成了UTC时间(旧版本认为是北京时间) 考 ... 
- docker时区正常,但java获得的时间早了8小时解决方法
		我解决容器时区的方法是挂载宿主机的/etc/localtime 到容器的/etc/localtime,这时输入date命令容器时区显示正常,但是跑在容器中的java项目取到的时间却早了8小时. 查阅相 ... 
- SpringBoot整合国际化I18n
		本文主要实现的功能: 从文件夹中直接加载多个国际化文件 后台设置前端页面显示国际化信息的文件 实现 国际化项目初始化,简单看下项目的目录和文件 在resource下创建国际化文件 messages.p ... 
- NET使用ABP框架搭建项目
		NET使用ABP框架搭建博客项目(一) 有很多学NET开发的小伙伴建项目都比较茫然,我用什么开发?我都使用什么框架?我怎么起名字?种种问题,让一些低等.中等的工程师(甚至是高级工程师)很烦躁. 推荐一 ... 
- php 学习笔记之关于时区的那点事
		科普一下什么是时区 众所周知,地球绕着太阳转的同时也会自转,因此同一时刻不同地区所接收到太阳照射的情况不同,所以有的地区是日出,有的地区是日落,还有的地区可能是黑夜. 既然地球上的不同地区时间不同,那 ... 
- docker容器时区问题
		原文:docker容器时区问题 版权声明:本文为博主原创文章,随意转载. https://blog.csdn.net/Michel4Liu/article/details/80890868 本系列目录 ... 
- ocp11g培训内部教材_051课堂笔记(047)_SQL
		OCP 051课堂笔记 目录 OCP 051课堂笔记... 1 第一章.Oracle命令类别:... 4 第二章.SQL的基本函数... 4 2.1 单行函数与多行函数... 4 2.2 单行函数的几 ... 
随机推荐
- 201521123009 《Java程序设计》第9周学习总结
			1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 Q1:常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何 ... 
- Log4J:Log4J三大组件:Logger+Appender+Layout 格式化编程详解
			快速了解Log4J Log4J的三个组件: Logger:日志记录器,负责收集处理日志记录 (如何处理日志) Appender:日志输出目的地,负责日志的输出 (输出到什么 地方) Layo ... 
- Android 之数据存储(sdCard,sharedPreference,sqlite数据库)
			sdCard:默认路径在 /storage/sdcard/... Android支持OpenFileOutput和openFileInput方式访问手机存储器上的文件. Context提供了如下两个方 ... 
- JVM菜鸟进阶高手之路七(tomcat调优以及tomcat7、8性能对比)
			转载请注明原创出处,谢谢! 因为每个链路都会对其性能造成影响,应该是全链路的修改压测(ak大神经常说全链路!).本次基本就是局域网,所以并没有怎么优化,其实也应该考虑进去的. Linux系统参数层面的 ... 
- C++初学 virtual 相关
			声明: 1.为了节省篇幅,头文件和域什么的都没写.另外可能是java转C++,有些叫法可能会不对 2.因初学,都是自己摸索的,有错望指出,勿喷 假设父类声明 Parent.h中如下 class Par ... 
- Python 接口测试(五)
			五:使用python进行组织编写接口测试用例 接口测试其实就是几个步骤. 拿到接口的url地址 查看接口是用什么方式发送 添加请求头,请求体 发送查看返回结果,校验返回结果是否正确 明白了接口测试的测 ... 
- 使用千位分隔符(逗号)表示web网页中的大数字
			做手机端页面我们常常遇到数字,而在Safari浏览器下这些数字会默认显示电话号码,于是我们就用到了补坑的方法加入<meta>标签: <meta name="format-d ... 
- HDFS概述(1)————HDFS架构
			概述 Hadoop分布式文件系统(HDFS)是一种分布式文件系统,用于在普通商用硬件上运行.它与现有的分布式文件系统有许多相似之处.然而,与其他分布式文件系统的区别很大.HDFS具有高度的容错能力,旨 ... 
- CSS3D模型
			html部分 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ... 
- SpringMVC加载.roperties文件属性值的方法?
			1.在xml文件中引入来获取属性值就不说了. 2.在controller层获取引用配置文件中的属性值: (1).编写工具类 @Configuration @PropertySource(value=& ... 
