Web开发中的时区转化问题

最近在项目开发中遇到了一个时间转化问题,在前台的flex端用 new Date()取得当前的时间,然后传输到服务器端,在服务器端需要取得他的时,分,秒,就使用了new timestamp(date.getTime());来转化。date是之前客户端传过来的时间。在本地测试是没有问题的,但是到pre-dev上的时候出现了前段输入时间和实际数据库存储的时间不宜值得bug.比较一下,相差了12个小时。仔细研究发现,时区问题导致的。本地的环境,客户端和服务器都在China,但是pre-dev的服务器是在波士顿的。在flex的客户端new 一个date出来的时间,是包含时区的,就是说 date.getTime()取得的毫秒是当前时间先转化为GMT时区的时间,然后再减去1900.1.1 00:00:00得到的值。而在java代码里面new timestamp(time)的时候,是将1900.1.1 00:00:00转化为当前时区的时间,然后再加上time。这样一来,flex端的时间和java里面生成的时间就相差了两个时区之差的时间,即北京时间和波士顿时间的时差,是12个小时。
要解决这个问题,一个方法是在java端创建一个newdate,然后取得传过来的时间的时,分,秒,。或者用TimeOffSet取得当前时区差值,减一下。

你可能感兴趣的:(Web,Flex)