java获取的毫秒与c#获取的毫秒相关问题

来源:互联网 发布:ubuntu默认字体 编辑:程序博客网 时间:2024/06/04 19:38

原文链接:http://blog.csdn.net/iforgetyou/article/details/7445956


最近开发遇到一个问题,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中已经明确说明了,是GMT的1970 年 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?


原创粉丝点击