我有一个存储日期的旧数据库 没有时区信息 .我需要将这些按面值读入客户端,即2 pm
在服务器时区应解释为 2 pm
在客户端时区。
通过替换 Date.prototype.toJSON
,我能够在查询服务器时删除时区使用简单地忽略时区的方法。现在我需要一个类似的解决方案服务器端。
这不是 how to set local timezone in sails 的副本.我要未设置 它。
编辑
日期在 PostGRES
中是正确的,但 Waterline/Sails 似乎在将其转换为 JSON 之前将其转换为 UTC。我不希望这种情况发生。 PostGRES 中的查询返回 2013-02-28 15:00:00
,但是当我 console.log 来自 Sails 中相同查询的结果(通过 custom made toJSON method )我得到 "2013-02-28T07:00:00.000Z"
反而。然后它被发送到客户端并转换为客户端的本地时间......你得到了图片。
最佳答案
所以sails-postgresql timezone support is broken .这是我的解决方法。我将日期字符串解析回 JavaScript 日期实例,将其设置为 UTC 时间,然后返回去掉时区的 ISO 字符串。客户从不提示。 :)
这一切都在 api/model/theModel.js
中完成,如 docs 中所述.
toJSON: function() {
var obj = this.toObject();
if (obj.datetime) {
var date = new Date(Date.parse(obj.datetime)),
y = date.getFullYear(),
m = date.getMonth(),
d = date.getDate(),
h = date.getHours(),
M = date.getMinutes(),
newDate = new Date();
newDate.setUTCFullYear(y);
newDate.setUTCMonth(m);
newDate.setUTCDate(d);
newDate.setUTCHours(h);
newDate.setUTCMinutes(M);
obj.datetime = newDate.toISOString().slice(0,-8);
}
return obj;
},
关于date - 如何在 Sails.js 中忽略时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252122/