角度显示日期为没有时区转换

时间:2015-01-13 18:58:48

标签: javascript angularjs date

我的对象的日期字段为"2015-01-31T00:00:00.000Z"我希望在我的应用中显示1/31/15。问题是它在我的时区显示我的日期,而不是UTC,因此实际上显示的是1/30/15。

我四处寻找并且无法找到一个干净的解决方案,只需显示日期而无需引入Angular 1.3或Moment。

1 个答案:

答案 0 :(得分:0)

我决定使用SO post的一些帮助创建我自己的过滤器。

.filter('utcDate', function ($filter) {
    return function (theDate) {
        var dateFilter = $filter('date');

        originalDate = new Date(theDate);

        currentDate = new Date();
        utcDate = millisToUTCDate(currentDate);

        millisecondsToUtc = utcDate - currentDate;

        originalDate.setHours(originalDate.getHours() + toHours(millisecondsToUtc))

        return dateFilter(originalDate, 'shortDate');
    };
});

function toUTCDate(date) {
    var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
return _utc;
};

function millisToUTCDate(millis) {
    return toUTCDate(new Date(millis));
};

function toHours(milliseconds) {
    return Math.round(milliseconds / 1000 / 60/ 60)
}