我们做的的都是国际化大项目,今天发现了个大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...问题的更多相关文章

  1. 参与国际化项目需遵循的java命名规范

    笔者最近帮助一些朋友应聘远程工作(一般都是一些国外的项目),国外的项目负责人一般都会要求提供github账号或者一些源代码,很多朋友在这一关就被筛选掉了,其中不乏一些我认为技术非常厉害的行业大牛,他们 ...

  2. BIP_开发案例10_BI Publisher报表国际化多语言的实现(案例)

    2014-12-26 Created By BaoXinjian

  3. [原创]Java项目统一UTC时间方案

    Java项目统一UTC时间方案 作者:Gods_巨蚁 引言 近期团队的个别项目在进行框架升级后,部分时间值存在8小时误差,原因是错误的将数据库中的时间数据理解成了UTC时间(旧版本认为是北京时间) 考 ...

  4. docker时区正常,但java获得的时间早了8小时解决方法

    我解决容器时区的方法是挂载宿主机的/etc/localtime 到容器的/etc/localtime,这时输入date命令容器时区显示正常,但是跑在容器中的java项目取到的时间却早了8小时. 查阅相 ...

  5. SpringBoot整合国际化I18n

    本文主要实现的功能: 从文件夹中直接加载多个国际化文件 后台设置前端页面显示国际化信息的文件 实现 国际化项目初始化,简单看下项目的目录和文件 在resource下创建国际化文件 messages.p ...

  6. NET使用ABP框架搭建项目

    NET使用ABP框架搭建博客项目(一) 有很多学NET开发的小伙伴建项目都比较茫然,我用什么开发?我都使用什么框架?我怎么起名字?种种问题,让一些低等.中等的工程师(甚至是高级工程师)很烦躁. 推荐一 ...

  7. php 学习笔记之关于时区的那点事

    科普一下什么是时区 众所周知,地球绕着太阳转的同时也会自转,因此同一时刻不同地区所接收到太阳照射的情况不同,所以有的地区是日出,有的地区是日落,还有的地区可能是黑夜. 既然地球上的不同地区时间不同,那 ...

  8. docker容器时区问题

    原文:docker容器时区问题 版权声明:本文为博主原创文章,随意转载. https://blog.csdn.net/Michel4Liu/article/details/80890868 本系列目录 ...

  9. ocp11g培训内部教材_051课堂笔记(047)_SQL

    OCP 051课堂笔记 目录 OCP 051课堂笔记... 1 第一章.Oracle命令类别:... 4 第二章.SQL的基本函数... 4 2.1 单行函数与多行函数... 4 2.2 单行函数的几 ...

随机推荐

  1. 201521123098 《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1. finally 题目4-2 1.1 截图你的提交结果( ...

  2. 201521123036 《Java程序设计》第14周学习总结

    本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 书面作业 MySQL数据库基本操作 1.1 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) ...

  3. 201521123053《Java程序设计》第十周学习总结

    ---恢复内容开始--- 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 在java多线程程序中,所有线程都不允许抛出未捕获的checked excepti ...

  4. 【化繁为简】非前端开发者的福音---CSS的预处理语言 Less&Sass

    写在前面:        众所周知CSS 是一门非程序式语言,没有变量.函数.SCOPE(作用域),在前期的界面样式设计时,需要书写大量看似没有逻辑的代码,不方便维护及扩展,也不利于重复调用,尤其对于 ...

  5. java web:在eclipse中如何创建java web 项目

    Eclipse创建java web工程 eclipse版本:eclipse-jee-4.5-win32-x64 tomcat版本:apache-tomcat-7.0.63-windows-x64 jd ...

  6. Spring第六篇【Spring AOP模块】

    前言 Spring的第五篇也算是AOP编程的开山篇了,主要讲解了代理模式-..本博文主要讲解Spring的AOP模块:注解方式和XML方式实现AOP编程.切入点表达式.. AOP的概述 Aop: as ...

  7. 进入css3动画世界(一)

    其实我做css3动画也没有多久,这篇文章目标人群是css3动画的新手,不喜勿喷. 分类 目前我接触到的css3动画有2类:一种是transition的,另一种是@keyframes的. 两者的区别就是 ...

  8. servlet文件上传2——复合表单提交(数据获取和文件上传)

    上传文件时表单enctype属性必须要更改为<enctype='multipart/form-data'>:采用post提交表单,元素需要有name属性: 利用第三方jar包(common ...

  9. C#设计模式之五创建者模式(Builder)【创建型】

    一.引言  今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一个复杂的物品,它主要是由CPU.主板.硬 ...

  10. HDFS概述(2)————Block块大小设置

    以下内容转自:http://blog.csdn.net/samhacker/article/details/23089157?utm_source=tuicool&utm_medium=ref ...