我们做的的都是国际化大项目,今天发现了个大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. 命令导入导出oracle库

    目前还是新手:所以记录下来最笨的方式,留用 一.从服务器先把库导出来 exp sys/mima@orcl  file = "d:\pybghs.dmp"   full=y 二.从服 ...

  2. spring mvc 经常出现的错误

    spring mvc 经常出现的错误 spring3.0 和jdk 1.8不是很兼容.有时候会出现一些错误 建议使用spring 4.0和jdk1.8搭配使用 书籍 spring mvc 学习指南上面 ...

  3. [python学习笔记] python程序打包成exe文件

    安装 pyinstaller pip3 install pyinstaller 命令 pyinstaller -F -w -i ../ui/icon.ico --clean ../Login.py 参 ...

  4. Azure SQL Database (25) Azure SQL Database创建只读用户

    <Windows Azure Platform 系列文章目录> 本文将介绍如何在Azure SQL Database创建只读用户. 请先按照笔者之前的文章:Azure SQL Databa ...

  5. Linux学习——shell编程之环境变量配置文件

    小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...

  6. Charles Proxy v4.1.4 免费注册激活方法

    去官网下载最新版Charles,目前是v4.1.4 下载后安装Charles,然后先打开一次Charles软件(Mac系统需要先打开一次,Windows不需要) 到网站 http://charles. ...

  7. 开源纯C#工控网关+组态软件

    一.   前言 在园子潜水也七八年了.说来惭愧,这么多年虽然一直自称.NET铁杆粉丝,然仅限于回几个不痛不痒的贴,既没有发布过代码,也没有写过文章. 看着.NET和C#在国外风生水起,国内却日趋没落, ...

  8. Springboot - 学习笔记 ②

    前言 这一篇是关于spring boot中的配置(configuration)的介绍,我们接下来要说的男主就是 “application.properties”. “男神”默认是生成在“/src/ma ...

  9. 斐波那契数列第N项f(N)[矩阵快速幂]

    矩阵快速幂 定义矩阵A(m*n),B(p*q),A*B有意义当且仅当n=p.即A的列数等于B的行数. 且C=A*B,C(m*q). 例如: 进入正题,由于现在全国卷高考不考矩阵,也没多大了解.因为遇到 ...

  10. 图解clientWidth,offsetWidth,scrollWidth,scrollTop

    新手看到这几个属性,很头疼,参考了网上一些文章,加上自己实践,给出对这几个属性的解释 我把代码贴上来,方便大家验证 在chrome浏览器中,不知为什么图片容器高度比图片高度多了4px,把图片设置为bl ...