gpt4 book ai didi

angularjs - 如何正确处理发送到服务器并返回的日期

转载 作者:行者123 更新时间:2023-12-04 18:06:29 25 4
gpt4 key购买 nike

我刚刚了解到 JavaScript Date 对象显然总是存储本地时区偏移量。当将这样的日期发布到服务器时(例如使用 $http.post),服务器获取 UTC 日期(本地日期减去时区偏移量)。那当然是对的。在我的例子中,服务器将日期存储在数据库中。

当从服务器获取日期时(例如使用 $http.get),服务器发回 UTC 日期。如果我直接将这些日期绑定(bind)到 View , View 将显示错误的日期(UTC 日期)。为了避免这种情况,我发现我必须向模型写入一个新的 Date 实例,传递我从服务器获得的日期。

问题是这需要大量工作,尤其是当服务器发送一个实际上应该直接绑定(bind)到 View 的模型时。

我正在寻找一种方法来避免为我在 Controller 中从服务器获取的模型的每个日期属性创建 Date 实例。

最佳答案

我已经创建了这个可以在客户端上运行的函数,它根据当前时区偏移量调整日期。当调整后的日期发送到服务器时,从发布数据解析的 DateTime 对象将表示与在客户端 UI 上看到的相同(本地)日期:

        adjustDateByTimezoneOffset: function (date) {

// Javascript Date object stores the local timezone offset.
// On tranmission to the server the UTC date is sent. The server
// may not be timezone aware, and so this function facilitates
// adjusting to a date which can then be sent to a .NET web application and
// be recieved as a DateTime instance that equals the current (local) time on
// the client.

if (date && (date instanceof Date)) {

var timezoneOffsetMinutes = date.getTimezoneOffset();

var setMinutes = date.getMinutes() - timezoneOffsetMinutes;

date.setMinutes(setMinutes);
}
else {

throw "Input variable must be Date";
}

return date;
}

关于angularjs - 如何正确处理发送到服务器并返回的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25431667/

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