date - 如何在 Sails.js 中忽略时区

标签 date datetime timezone sails.js waterline

我有一个存储日期的旧数据库 没有时区信息 .我需要将这些按面值读入客户端,即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/

相关文章:

c# - ConvertTimeFromUTC,处理澳大利亚 DST

django - 带有用户时区的日期时间str

java - Scala 时区问题

c - 段错误 - 代码中的核心转储

sql - MySql 获取日期值之间的行

java - 在 Java 中创建日期的正确方法是什么?

javascript - 是否有更好的 JavaScript 代码来验证字符串作为日期时间?

php - 如何获取当前日期和时间 YYYY-MM-DD HH : MM? LARAVEL 4

c - time.h 直接替换 : time_t for values (year < 1970) and (year > 2038) in ANSI-C or C99

python - 为什么 time.strptime ("Sept. 30, 2014", "%b. %d, %Y") 不工作