更正不同时区的错误日期(浏览器与服务器)

时间:2019-01-08 14:18:01

标签: javascript

我刚刚意识到我的代码有很大的问题。我有一个输入,用户在其中输入日期vm.startDate

我需要使用这个日期(以毫秒为单位,从url + startDate起发出请求)。

API服务器托管在UCT +2上,并且我在UCT + 0上的浏览器中,所以我生成的错误日期以毫秒为单位(当我检查ms到在线日期时,小时是错误的)。

如何解决此问题?我是否应该根据服务器的部署时间增加时间?

 // By default select the today's date
var todayDate = new Date();
var day = todayDate.getDate();
var month = todayDate.getMonth() + 1;
var year = todayDate.getFullYear();

vm.startDate = day + "." + month + "." + year; // assign default date

$scope.$watch("vm.startDate", function() {
    console.log(vm.startDate);   

    if(vm.startDate != null) {
        // Concat 00:00:00 time
        var startDate = vm.startDate.split(".");
        startDate = new Date(startDate[2], startDate[1] - 1, startDate[0]);
        startDate = startDate.getTime(); // Time in ms
        console.log("Time in ms: " + startDate);
        // Get File In Data
        $http.get(url + startDate).then(..... Stuff) 


   }

请帮助我

1 个答案:

答案 0 :(得分:0)

此问题的一般规则是:

  

UTC 一起使用,并仅在表示层上进行转换(前端)

您必须始终发送UTC时间戳,当具有不同区域设置的浏览器需要呈现时,请对其进行转换以反映浏览器的时区。

默认情况下,MomentJS这样的库使用浏览器时区来做到这一点:

  

默认情况下,时刻对象是在当地时区创建的。