最近遇到了这个问题,就是相同的代码在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. PowerShell Gallery

    https://docs.microsoft.com/en-us/powershell/gallery/getting-started https://www.powershellgallery.co ...

  2. 记录一下 ajax的基础传送

    传数据 var json = $("#form").serializeObject(); $.ajax({ url: "/getUser", type: &qu ...

  3. c# Database类的使用

    参考资料http://ansonlh.iteye.com/blog/1689009 搜索:c# DatabaseFactory类

  4. 学习使用JUnit4进行单元测试

    借用http://blog.csdn.net/andycpp/article/details/1327147等文章上面的例子和教程进行学习总结,自己敲了一遍代码,发现里面有些东西,可能版本原因,已经稍 ...

  5. MongoDB 基本语法笔记

    MongoDB常识 MongoDB Shell是MongoDB自带的交互式Javascript shell,所以可直接执行JS脚本,用来对MongoDB进行操作和管理的交互式环境. ObjectId: ...

  6. Machine.config与web.config

    应用范围的不同 结点介绍 原理介绍 异常 web.config详解

  7. openlayers空间点查询之GetFeatureInfo

    在map对象上注册点击方法监听, 这里我用的是wms,当然你也可以查询wfs map.events.register('click', map, function (e) {              ...

  8. 用命令bat打开某个文件或文件夹

    打开文件或文件夹可以用start命令,start命令会根据文件关联的程序自动调用关联的程序打开文件和文件夹. 可以用记事本写如下命令,之后改扩展名为.bat即可 打开文件夹 start "& ...

  9. hdu 5212 Code 筛法或者莫比乌斯

    Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Des ...

  10. Appium-desktop的下载&安装

    下载地址: http://appium.io/ 选择版本 双击安装