java – 关于本地和服务器的日期问题

前端之家收集整理的这篇文章主要介绍了java – 关于本地和服务器的日期问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在我的系统中使用CST时间,从前端到javascript我今天发送日期到spring控制器.在Spring控制器中通过请求参数我得到了日期并通过@DateTimeFormat注释转换为日期,我得到相同的日期回到视图我得到了我期待的确切日期.

但是,当我通过部署在亚马逊服务器中的测试环境进行测试时.当我通过今天的日期,当我试图获得相同的日期到前端时,它将作为不同的日期.我写了我用过的代码.

使用Javascript

$http({
        method : 'GET',url : urlpath + '/getDate/',params: {
          date: new Date().toString("MM/dd/yyyy")

            }
    }).success(function(response) {
    console.log("date is"+response)                                 
}

Java代码

@RequestMapping(value = "/getdate",method = RequestMethod.GET)   
public  Date getdate(@RequestParam("date") @DateTimeFormat(pattern ="MM/dd/yyyy") throws Exception {                       
    return date;    
}

我本地机器的日期是01-05-2015 23:17
 控制台声明是2015年5月1日星期五00:00:00 GMT-0500(中部夏令时)没有hh mm和ss,因为我使用datetimeformat注释裁剪.

在我的测试环境中,我使用相同的代码,但控制台正如下面那样引用
2015年4月30日星期四23:00:00 GMT-0500(中部夏令时)

任何人都可以指出这个问题并告诉我这个问题的根本原因.

最佳答案
时间只有HH:MM:SS就是这样.除非您隐式设置时区,否则Timezone将作为您计算机的默认设置.所以,正如你所看到的,当你只发送时间时,它实际上并不代表什么是实时.

有两种解决方案.

1)最简单.无论你送什么,都把它扔到同一时区.例如UTC.然后,每当你得到它 – 用它作为时间形式UTC.隐.因此,系统的每个部分都知道发送时间是UTC并相应地采取行动.永远不要将其保留为默认值谁知道你的一台电脑在哪里(什么时区).

2)类似但参数更多.发送2个参数 – 时间和时区.工作方式相同 – 你总是需要投入时间(再次,永远不要使用默认值) – 但是,至少,你知道发送方的实时时间,在这种情况下,你会看到你的测试计算机时区是什么.

原文链接:https://www.f2er.com/spring/432218.html

猜你在找的Spring相关文章