你的java程序真的跨平台吗?java获取当前时间毫秒数问题引发

最近开发遇到一个问题,java(服务端)与c#(客户端)通讯,传递一个时间的毫秒数,然后解析成时间串。

 

Java开发的人都知道

Date date = new Date();

date.getTime();

返回自 1970 1 1 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

然后通过

  Date date = new Date();

  date.setTime(date.getTime());

 

将时间设置回来。这本身没有错,但是要注意了,api中已经明确说明了,是GMT1970 1 1 00:00:00

意思就是如果你的系统时区不是标准时区(GMT +08)的话会有什么现象呢?

你的时间(标准时区)+时区差(8个小时)- 1970年的标准时间

怎么样,由于系统的时差不同,所得的结果是不一样的。

而项目中的.net开发中计算的都是标准时区的差,所以java服务端解析时时间总是对不上,会差8个小时。同样,你开发的java客户端也会由于时区不同,带来的效果也不一样,以后要多多注意了。

 

 

解决方法:尽量所有的东西都不依赖操作系统

 

1.可以直接设置jvm启动参数

-Duser.timezone=GMT+08

2.在程序里指定

System.setProperty("user.timezone","GMT +08");

3.And so on

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值