我们做的的都是国际化大项目,今天发现了个大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. Java课程设计 猜数游戏个人博客

    1.团队课程设计博客链接 http://www.cnblogs.com/tt1104/p/7064349.html 2.个人负责模块或任务说明 1.成绩排行榜算法的设计: 2.排行榜存放到文件中, 3 ...

  2. 201521123089 《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 Q1.互斥访问与同步访问 1.1 除了使用synchronized修饰方 ...

  3. JSON【介绍、语法、解析JSON】

    什么是JSON JSON:JavaScript Object Notation [JavaScript 对象表示法] JSON 是存储和交换文本信息的语法.类似 XML. JSON采用完全独立于任何程 ...

  4. XML功能

    REF:https://www.baidu.com/link?url=_-UY8rZVAORlesKTth0F7C8LbvXCL4lSwz6vmQVnTEgmT06NFGdoaD9FbuEQhR7xG ...

  5. Android 之xml解析

    HTTP网络传输中的数据组织方式有三种方式:1.HTML方式2.XML方式 3.JSON方式 XML称为可扩展标记语言,它与HTML一样,都是SGML(标准通用标记语言) XML是Internet环境 ...

  6. java基本类型与Hadoop常见基本类型的对照

    Long LongWritable Integer IntWritable Boolean BooleanWritable String Text 1.java类型转化为hadoop基本类型 调用ha ...

  7. 翻译:MariaDB字符集和排序规则

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  8. Quartz源码——Quartz调度器的Misfire处理规则(四)

    Quartz调度器的Misfire处理规则 调度器的启动和恢复中使用的misfire机制,还需细化! SimpleTrigger的misfire机制 默认的 Trigger.MISFIRE_INSTR ...

  9. pygame_polygon

    今天我们要在窗口上绘制简单的多边形 1.认识几个简单的常用的颜色: black=(0,0,0) while=(255,255,255) red=(255,0,0) green=(0,255,0) bl ...

  10. http://codeforces.com/contest/612/problem/D

    D. The Union of k-Segments time limit per test 4 seconds memory limit per test 256 megabytes input s ...