牛骨文教育服务平台(让学习变的简单)
博文笔记

angularJS 转换UTC时间及DateFormat问题

创建时间:2015-08-07 投稿人: 浏览次数:7459

$filter("date")(milliSec, "yyyy-MM-dd HH:mm:ss")

在angularJS 中 date filter会把时间转换为本地时间,即会按照电脑右下角的时间设置的时区来转换。

dateObject.getFullYear(); // 返回dateObject 的年份字段,使用本地时间。
dateObject.getMonth(); // 返回dateObject 的月份字段,使用本地时间。


要返回UTC时间,使用:

dateObject.getUTCFullYear();//返回 dateObject 用世界时表示时的年份,该值是一个四位的整数,而不是两位数的缩写。
dateObject.getUTCMonth(); //返回 dateObject 用世界时表示时的月份,该值是 0(一月) ~ 11(十二月) 之间中的一个整数。


所以,如果要格式化一个毫秒时间为UTC时间,可使用以下函数:

 var format = function(time, format){
            var t = new Date(time);
            var tf = function(i){return (i < 10 ? "0" : "") + i};
            return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function(a){
                switch(a){
                    case "yyyy":
                        return tf(t.getUTCFullYear());
                        break;
                    case "MM":
                        return tf(t.getUTCMonth() + 1); // 返回 用世界时表示时的月份,该值是 0(一月) ~ 11(十二月) 之间中的一个整数。所以要加1
                        break;
                    case "mm":
                        return tf(t.getUTCMinutes());
                        break;
                    case "dd":
                        return tf(t.getUTCDate());
                        break;
                    case "HH":
                        return tf(t.getUTCHours());
                        break;
                    case "ss":
                        return tf(t.getUTCSeconds());
                        break;
                };
            });
        };
alert(format(1396178344662, "yyyy-MM-dd HH:mm:ss"));

如果要将一个UTC时间按设置的timezone, daylightsaving 计算一个本地时间再格式化, 可以:

milliSec= milliSec+ (timeZone * 3600000) + (daylightSaving * 60000);
format(milliSec, "yyyy-MM-dd HH:mm:ss")

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。