NutzCN Logo
问答 诡异的date时间变化
发布于 417天前 作者 qq_5d22b496 599 次浏览 复制 上一个帖子 下一个帖子
标签:

事情是这样的,我后台开启服务器去定一个时间发送东西,然后这个东西就正常发送出去,时间那些也是对的!!!!然后我进行另一个其他的GM操作-(手动输入一个原始数据库,解析这个数据库中的数据,然后放入到一个新的数据库中,这两个数据库都是手动输入的),等这个操作完了后,我又进行定时发送东西,然后,时间就出问题了。比正常时间少8个小时。我用的是Date,从页面上输入的时间也少8个小时!!定时发送也发送不了,,,,求大神解释解释啊!!!!!!!

64 回复

你的服务器是不是没在中国,怎么感觉是时区的问题?

我当时也觉得是时区问题,可是服务器在中国啊!!!而且重启服务器又没问题了!!!然后再进行解析操作又出问题了!!!所以很苦恼,很懵逼~~~太灵异了!!!我在页面输入时间,页面上显示的正确的时间,可是到了后台时间又少了8个小时!!!

大神,会不会是手动插入数据库会出问题啊??

手动插入数据库是什么意思

就是通过BasicDataSource去连接数据库,然后后面也罢通道关闭了的

那你查时区没?

没有呢,我是用date本地我的电脑时间,这还要查时区吗??

服务器的时区

兽总,我quartz定时器也失效,定时时间对的到了那个时间也没做运行

上面说的东西都在你电脑上, 没有"服务器" ???

对啊,所有东西都在我电脑上,现在只是把我电脑上的东西当成服务器的

哦, mysql的jdbcURL加上时区吧

还有这种操作???兽总我试试

兽总还是不行,运行后我这边的quartz可以添加一个定时器,但是到了那个时间不执行0.0,然后我重启服务器在quartz中再添加一个定时器,然后到时间了就会运行

quartz是按jvm的时间跑的

jvm时间我这也没变呢吧!!哥,麻烦说一下怎么整吧,我比较懵逼!!!!

这一会本地一会服务器的, 你自己蒙圈了吧

嗯,我重新捋捋哈!!!!就是我所有时间是new Date()上的时间,然后呢!我这台电脑就相当于服务器!!那么我的电脑时间就是相当于服务器时间吧???然后呢!!我通过手动加载数据库的方式去解析原数据(这个不会改变时间时区吧)!!然后我用quartz也是用的我的电脑的时间,可是quartz不会执行

jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT+8

日志里面是什么时间,配个一分钟一次的quartz,打印日志看看

是Date呀,楼上那种方式用了也没用,时间是对的,但是到了那个店还是不会发送出去的!!

贴你的 定时任务cron 表达式

另外任务打印下执行的时间
@qq_5d22b496

没有用cron,用的是这种

   withIdentity(jobName, TRIGGER_GROUP_NAME).
                 withSchedule(
                         SimpleScheduleBuilder.
                         simpleSchedule().
                         repeatForever().
                         withIntervalInMinutes(x)
                         ).endAt(endTime).
                         startAt(startTime).
                         build();

打印下startTime 与endTime 同时再打印下当前的时间

Mon Aug 28 17:53:00 CST 2017
Mon Aug 28 17:52:36 CST 2017
Mon Aug 28 17:54:00 CST 2017

老哥,整了好多遍都是一样的,,该怎么搞啊??都是date时间,但是quartz没有执行

这是怎么打印出来的时间?? 代码发一下

 System.out.println(startTime);
    	 System.out.println(new Date());
    	 System.out.println(endTime);

把startTime设置为昨天, endTime设置为后天, 看看job是否能触发

Sun Aug 27 18:06:00 UTC 2017
Mon Aug 28 10:14:33 UTC 2017
Tue Aug 29 18:07:00 UTC 2017

嗯???这个就可以了???能执行!!

老哥,可是放在今天他就不行,在今天的范围内不能执行

额,难道是nutz的那个老bug?? 你用的是什么版本的nutz??

不对,貌似没涉及到nutz的样子

哪里可以看nutz的版本哦???0.0!!!我觉得没有涉及吧!!我只是用了一个dao区纪录我的连了什么数据库,去纪录时间,然后就没用其他的了

反正今天也快过完了,明早正常就好了..

啊???哥哥,如果我放到让别人做调试,会出现问题的,不可能就一直这样跨天吧~~~~~~~0.0

这个......我百度看看,他这个是输入一个开始时间,结束时间,和间隔时间!!就像走马灯一样,觉得这个方式好一点!!!改成cron就不太会了0.0

我定cron的时候,不知道怎么去定义结束时间,很尴尬啊~~

你说你的需求

我的需求说了呀!!!输入一个开始时间,结束时间和间隔时间,按照这个规则去执行走马灯!!!在一个时区中每间隔固定时间执行一次命令

https://www.oschina.net/p/cron
用这个工具生成小cron表达式

不行啊,哥哥们,我急求解决办法!!!大哥们

我觉得你得建个新项目来测试了

老大哥们,我觉得会不会真的是nutz的关系??因为我这边输出现在的时间还是8个小时以前的!!!这个时间是不定时会变成8个小时以前的!!然后导致quartz不能运行???,下面我贴的是开始时间,现在时间和结束时间!!!

Mon Aug 28 21:20:00 UTC 2017
Mon Aug 28 13:19:59 UTC 2017
Mon Aug 28 21:29:00 UTC 2017

我在url上设置了时区的也不对!!!!哎。。。

s.setUrl("jdbc:mysql://" + db.getServerIpPort() + "/" + db.getDbname()+"?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"

@qq_5d22b496 cron表达式只设置间隔时间执行,例如每秒执行一次。在执行方法里判断执行时间是否在周期内。

来自 iPhone 5S

呃,你数据库字段类型是 datetime ?

来自美丽的 NutzCN

@qq_5d22b496 用最新版的nutz试试

来自 iPhone 6

老哥们,我现在才看到!不好意思!!!!这个玩意儿还是莫名就变化了时区,而且不是因为数据库引起的!!!我存入字符串!然后莫名有时候时区也会多8小时或者少8小时!!!然后就导致quartz不能正常运行的!!所以我做了一个很坑的决定,每次运行时间前都将时区调到中国时区!!但是有时候还是会出现那个问题,但是几率小了很多!

windows 系统? 自动修改时区了?

对,Windows系统,自动修改时区的

地区选了英国??

不是啊!!我地区选的是中国,然后在项目中我也修改了地区,让他一直在中国!!但是有时候会莫名的多8个小时过少8个小时!!不是百分百必现的,也弄不懂在什么情况下会出现这种情况

@wendal
兽总,我也遇到了类似问题,数据库中存储的是2017-12-05 11:25:10
后台从数据库查询之后转为date类型的对象就变成了 2017-12-06 1:25:10,有14个小时的差距
一开始以为是服务器时间不对,但是检查之后并没有问题
不知道有没有遇到类似问题的

服务器的时区检查一下

@wendal
CST +0800 时区没问题

@wendal 必须要在db的配置上加上设置时区的一段话才能恢复正常,但是之前一直用的同一个服务器以及数据库都没有出现这样的问题
差别只是我把nutz 升级到了63版本,不知道是不是跟这个有关系,会不会和我把连接池升级到了

      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.5</version>

有关系?

没印象63有改过这种东西... 而且14小时这个差距太诡异了吧, 要么8要么16, 不晓得14是哪个时区了

升级之前是什么版本呢?

@wendal
换回了以前的版本,还是有+14个小时的差异。。不知道是不是其他地方有问题
我再找找。。谢谢兽总

方便用jdbc测试一下吗?

@wendal
谢谢兽总指出了明路
我在这个工程使用了JDBC 6.0.6
把版本号降到5.1.45 就不会有问题了。。。
但是到底为什么会这样还是不清楚。。。

添加回复
请先登陆
回到顶部