加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 01:29:25 所属栏目:大数据 来源:网络整理
导读:我在我的系统中使用CST时间,从前端到javascript我今天发送日期到spring控制器.在Spring控制器中通过请求参数我得到了日期并通过@DateTimeFormat注释转换为日期,我得到相同的日期回到视图我得到了我期待的确切日期. 但是,当我通过部署在亚马逊服务器中的测试

我在我的系统中使用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个参数 – 时间和时区.工作方式相同 – 你总是需要投入时间(再次,永远不要使用默认值) – 但是,至少,你知道发送方的实时时间,在这种情况下,你会看到你的测试计算机时区是什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读