以角度js

时间:2017-11-28 10:09:51

标签: angularjs timezone datetime-conversion datefilter

从服务器我得到这种格式的时间" 21/11/2017 17:01:30",这次是在IST。我想将此时间转换为用户当地时间。

我正在使用下面给出的代码,

var startDateTimeArray = eachExeRun.startDate.split(" ");
var startDateArray = startDateTimeArray[0].split("/");
var startDate = new Date(startDateArray[2]+"-"+startDateArray[1]+"-"+startDateArray[0]+' '+startDateTimeArray[1]);

现在我的startDate是" 2017年11月21日星期二16:59:29 GMT + 0530(印度标准时间)"

在html中,我像这样使用

{{startDate | date:'yyyy-MM-dd HH:mm:ss'}}

在此之后测试我的代码我将系统的时区更改为通过时区,然后我的startTime更改为" 2017年11月21日星期二16:59:29 GMT-0800(太平洋标准版)时间)",但在我看来仍然显示" 2017-11-21 16:59:29 "

如何在日期过滤器中不使用时区显示更新时间(日期:' yyyy-MM-dd HH:mm:ss Z')。

2 个答案:

答案 0 :(得分:0)

使用moment.js是节拍方式。

但是,您也可以编写自定义过滤器来转换日期。

试试这个:

    app.filter('myFormat', function() {
        return function(x) {
                var startDateTimeArray = x.split(" ");
                var startDateArray = startDateTimeArray[0].split("/");
                var startDate = new Date(startDateArray[2]+"-"+startDateArray[1]+"-"+startDateArray[0]+' '+startDateTimeArray[1]);
                console.log(startDate);
                //from timezone
                var IST_timezone_offset = -330; // IST timezone offset -always known
                var req_UTC_Milliseconds =  (IST_timezone_offset * 60000) ;
                //to timezone
                var local_timezone_offset = startDate.getTimezoneOffset(); 
                var local_UTC_Milliseconds = (local_timezone_offset * 60000);

                var final_date = new Date( startDate.getTime() + (req_UTC_Milliseconds - local_UTC_Milliseconds ) );

                return final_date;
            };
        });

Working Fiddle

答案 1 :(得分:0)

使用momentJs非常简单:

找到以下工作代码段:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script src="https://momentjs.com/downloads/moment.js"></script>
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.min.js"></script>

<body>

    <h2>My IST to Local System Date Convertor</h2>
    <div ng-app="myApp" ng-controller="dateCtrl">
        <p>{{convertIstToSystemLocalDateUsingTimeZone(IstStartDate)}}</p>
    </div>

    <script>
        var app = angular.module('myApp', []);
        app.controller('dateCtrl', function ($scope) {
            $scope.IstStartDate = '21/11/2017 17:01:30';
            $scope.convertIstToSystemLocalDateUsingTimeZone = function (incomingISTString) {
                return moment.tz(incomingISTString, 'DD-MM-YYYY HH:mm:ss', 'Asia/Kolkata')
                    .local().format('DD-MM-YYYY HH:mm:ss');
            }
        });
    </script>

</body>

</html>