日期在Linux与Windows下的区别
最近遇到了这个问题,就是相同的代码在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下的区别的更多相关文章
- 从Docker在Linux和Windows下的区别简单理解Docker的层次结构
上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的W ...
- 【转】linux和windows下安装python集成开发环境及其python包
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- 【转载】LINUX 和 WINDOWS 内核的区别
LINUX 和 WINDOWS 内核的区别 [声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1 ...
- 【深度学习】在linux和windows下anaconda+pycharm+tensorflow+cuda的配置
在linux和windows下anaconda+pycharm+tensorflow+cuda的配置 在linux和windows下anaconda+pycharm+tensorflow+cuda的配 ...
- [笔记]linux下和windows下的 创建线程函数
linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(ti ...
- protobuff 配合 libevent 在Linux 和windows 下的使用
protobuff 配合 libevent 在Linux 和windows 下的使用待补全. libprotobuf.lib libproto-lite.lib libprotoc.lib
- tar.xz如何解压:linux和windows下tar.xz解压命令介绍
在linux下怎么解压和压缩tar.xz文件? (本文由www.169it.com搜集整理) 在linux下解压tar.xz文件步骤 1 2 # xz -d ***.tar.xz //先解压xz # ...
- Linux和Windows下查看环境变量方法对比
摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...
- Golang 在 Mac、Linux、Windows 下如何交叉编译(转)
原文地址:Golang 在 Mac.Linux.Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下 ...
随机推荐
- ssm项目部署到服务器过程
ssm项目部署到服务器过程 特别篇 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目 https://github.com/Draymonders/Campus-Sho ...
- MPI之聚合通信-Scatter,Gather,Allgather
转自:https://blog.csdn.net/sinat_22336563/article/details/70229243 参考:http://mpitutorial.com/tutorials ...
- C盘清理
魔方清理大师 “清理大师”->清理界面 一键清理=>开始扫描=>立刻清理 注册表清理=>开始扫描=>立刻清理 深度清理=>开始扫描=>立刻清理 C:\User ...
- Selenium Webdriver 自动化测试开发常见问题(C#版)
转一篇文章,有修改,出处http://www.7dtest.com/site/blog-2880-203.html 1:Selenium中对浏览器的操作 首先生成一个Web对象 IWebDriver ...
- Python: find the smallest and largest value
题目要求: Write a program that repeatedly prompts a user for integer numbers until the user enters 'done ...
- 【Python】【jupyter-notebook】
1. win7 安装:https://www.cnblogs.com/zlslch/p/6984403.html 1.Jupyter Notebook 和 pip 为了更加方便地写 Python ...
- vs2013 报错error C1083: 无法打开包括文件:“gl\glew.h”: No such file or directory\
vs报错诸如如无法打开“gl\xxx.h”时, 解决方法: 1.去http://glew.sourceforge.net/下载相关文件,2.在下载下来的文件里找到xxx.h,将其复制到vs的相关目录下 ...
- java扫描文件夹下面的所有文件(递归与非递归实现)
java中扫描指定文件夹下面的所有文件扫描一个文件夹下面的所有文件,因为文件夹的层数没有限制可能多达几十层几百层,通常会采用两种方式来遍历指定文件夹下面的所有文件.递归方式非递归方式(采用队列或者栈实 ...
- 一般删除网页数据和jquery下使用Ajax删除数据的区别
1. 一般删除网页数据 就是指用户在点击删除的时候,会跳转到DeleteUser.ashx一般处理程序中,并且通过get传参的方式传递一个id的参数,然后在后台处理 <a href='Delet ...
- Calendar的使用注意
一.Calendar和GregorianCalendar的关系 GregorianCalendar的一点: // 初始化 Gregorian 日历 // 使用当前时间和日期 // 默认为本地时间和时区 ...