最近遇到了这个问题,就是相同的代码在Windows与Linux下的日期转换不一致。

原因:时区问题,主要是操作系统与JVM中的时区不同导致的

在网上查了很多处理的方法:最后总结出一条简单粗暴的方法;原理很简单,就是将要转换的日期转换成“GMT+8”,然后统一转换成String,再将String统一转换成时间戳,这样相应的时间差就不变了。

     public MonitorBean findByCity(String city) {
int code = -1;
SimpleDateFormat formatter = new SimpleDateFormat("yyMMdd"); // 规定日期格式
formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String tableName = "shop_queue_" + formatter.format(new Date());
String sql = "select crawled_at from " + tableName + " where city = \"" + city + "\"" + " order by id desc limit 1;";
try {
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
if (resultSet.next()) {
Timestamp timestamp = resultSet.getTimestamp(1);
String timestampString = timestamp.toString().substring(0,timestamp.toString().length()-2); SimpleDateFormat formatNowTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 规定日期格式
formatNowTime.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String nowTimeString = formatNowTime.format(new Date());
try{
long timeStamp = formatNowTime.parse(timestampString).getTime();
long nowTime = formatNowTime.parse(nowTimeString).getTime();
long value = nowTime - timeStamp;
if (value < Integer.valueOf(MAX_MIN) * 60 * 1000) {
code = 100;
}else {
code = 200;
}
}catch (Exception e){
e.printStackTrace();
MonitorBean monitorBean = new MonitorBean(city, "-1", e.getMessage());
return monitorBean;
}
}
resultSet.close();
connection.close();
if(code > 0){
return new MonitorBean(city, String.valueOf(code), city+"超出" + MAX_MIN + "分钟无数据");
}else{
return new MonitorBean(city, String.valueOf(code), city+"无数据");
}
} catch (SQLException e) {
e.printStackTrace();
MonitorBean monitorBean = new MonitorBean(city, "-1", e.getMessage());
return monitorBean;
}
}

中间还遇到了查询MySQL出现后缀.0的情况,这个.0代表的是毫秒;

今天科大60周年庆,就在这里默默的祝福科大;有点想苏大了。

日期在Linux与Windows下的区别的更多相关文章

  1. 从Docker在Linux和Windows下的区别简单理解Docker的层次结构

    上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的W ...

  2. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  3. 【转载】LINUX 和 WINDOWS 内核的区别

    LINUX 和 WINDOWS 内核的区别 [声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1 ...

  4. 【深度学习】在linux和windows下anaconda+pycharm+tensorflow+cuda的配置

    在linux和windows下anaconda+pycharm+tensorflow+cuda的配置 在linux和windows下anaconda+pycharm+tensorflow+cuda的配 ...

  5. [笔记]linux下和windows下的 创建线程函数

    linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(ti ...

  6. protobuff 配合 libevent 在Linux 和windows 下的使用

    protobuff 配合 libevent 在Linux 和windows 下的使用待补全. libprotobuf.lib libproto-lite.lib libprotoc.lib

  7. tar.xz如何解压:linux和windows下tar.xz解压命令介绍

    在linux下怎么解压和压缩tar.xz文件? (本文由www.169it.com搜集整理) 在linux下解压tar.xz文件步骤 1 2 # xz -d ***.tar.xz  //先解压xz # ...

  8. Linux和Windows下查看环境变量方法对比

    摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...

  9. Golang 在 Mac、Linux、Windows 下如何交叉编译(转)

    原文地址:Golang 在 Mac.Linux.Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下 ...

随机推荐

  1. (转)Swagger2 & Postman工具使用

    (二期)7.swagger2与postman [课程七]swagge...tman.xmind0.3MB [课程七预习]sw...tman.xmind31.3KB 随着互联网技术的发展,现在的网站架构 ...

  2. SSM项目 单元测试中 注入bean 空指针异常

    ##特别 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目https://github.com/Draymonders/Campus-Shop java.lang.Nu ...

  3. java 之 基础加强(一)

    常用快捷键: alt + / 代码提示 ctrl + / 单行注释 取消注释 ctrl + shift +/ 多行注释(先选中内容) ctrl + shift +\ 取消注释(先选中内容) ctrl ...

  4. java 之 dom4j解析xml

    *dom4j,是一个组织,针对xml解析,提供解析器dom4j *dom4j不是javase的一部分,想要使用需要导入dom4j提供的jar包 *第一步:创建lib文件夹,将压缩文件放到此处 *第二步 ...

  5. Sql 通过表名查找所有列名

    SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ImmediacyOutKu'

  6. 什么情况下用断言?assert

    可以再预计正常情况下不会到达的任何位置上放置断言,断言可以用于验证传递给私有方法的参数.不俺的参数过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数.不过,既 ...

  7. Kubernetes简介

    Kubernetes is an open-source platform designed to automate deploying, scaling, and operating applica ...

  8. demoshow - webdemo展示助手

    demoshow - web demo展示助手 动态图演示页面: http://www.cnblogs.com/daysme/p/6790829.html 一个用来展示前端网页demo的小“助手”,提 ...

  9. HDU 4302 Holedox Eating(multiset)

    http://acm.hdu.edu.cn/showproblem.php?pid=4302 题意: 在一条直线上,会有多条命令,如果是0,那么就会在x位置处出现一个蛋糕,如果是1,某人就会找到最近的 ...

  10. MRO和C3算法

    本节主要内容: 1.python多继承 2.python经典类的MRO 3.python新式类的MRO,C3算法 4.super() 一.python多继承 在python中类与类之间可以有继承关系, ...