gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:51:03 26 4
gpt4 key购买 nike

我在我的系统中使用 CST 时间,从前端到 javascript 我将今天的日期发送到 spring Controller 。在 spring Controller 中,通过请求参数我获取日期并通过 @DateTimeFormat 注释转换为日期,我将相同的日期返回到 View 中,我得到了我期望的确切日期。

但是,当我通过部署在亚马逊服务器上的测试环境进行测试时。当我通过今天的日期并且当我试图将相同的日期发送到前端时,它会作为不同的日期出现。我已经编写了我使用的代码。

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 控制台声明是 Fri May 01 2015 00:00:00 GMT-0500(中央夏令时)没有 hh mm 和 ss,因为我使用 datetimeformat 注释进行裁剪。

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

谁能解决这个问题并告诉我这个问题的根本原因。

最佳答案

时间只是 HH:MM:SS,仅此而已。时区是您计算机的默认设置,除非您隐式设置了不同的时区。因此,如您所见,当您仅发送时间时,实际上对实时时间毫无意义。

有2种解决方案。

1) 最简单。无论您发送什么,都将其转换到同一时区。例如协调世界时。然后,无论何时获得它 - 将其用作 UTC 时间。含蓄地。因此,系统的每个部分都知道发送时间是 UTC 并相应地采取行动。切勿将其保留为默认值。谁知道您的一台计算机在哪里(什么时区)工作。

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

关于java - 关于本地和服务器中的日期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com