将日期从本地时区转换为UTC然后再转换为本地时区

时间:2015-08-03 10:49:38

标签: javascript angularjs date datetime ionic

我正在AngularJs中创建一个应用程序。 但问题是数据库是由其他人控制的。 它们将数据库中的时间节省为ISD(印度标准)。 当我打电话给webservices来获取这些日期时,它会以字符串形式出现,例如YYYY / MM / DD HH / MM / SS示例2015/02/23 23/59/01。 我有一个日期列表,我必须使用像这样的ng-repeat显示。

<ion-item ng-repeat="item in MeIdeaList | orderBy:'-CreatedDate'" style="background-color:rgb(25, 26, 0);" ng-click="ShowIdeaDetails(item.Id)">
           <div class="row">
               <div class="col col-80" style="color:white">
                   <p> {{item.Title}}</p>
                </div>
                <div class="col col-20" style="color:red">
                    <b>{{item.Status}}</b>
                </div>
            </div>
            <div class="row">
               <div class="col col-70" style="color:white">
                    {{item.CreatedDate}}
                </div>
                <div class="col col-30">
                    <i class="icon ion-chevron-right icon-accessory" style="float:right;color:white"></i>
                </div>
            </div>

        </ion-item>

现在我想将此日期显示为用户访问数据的本地时间。 就像我在美国一样,日期将来自数据库仅作为ISD。如何将此ISD转换为UTC然后获取时区并添加或减去分钟并在UI中向用户显示。

3 个答案:

答案 0 :(得分:0)

&#13;
&#13;
function setDateLocal(input)
{
  var date = input.split(" "); //remember input needs to be as you described.
  date = date[0] + "T" + date[1].replace(/\//g, ":") + "+0000";
  var ist = 19800000; //time zone is IST, which is 5.30 from UTC in milliseconds
  var utcDate = new Date(Date.parse(date)-ist).toUTCString();
  return new Date(Date.parse(utcDate));

}

document.body.innerHTML += setDateLocal("2015/02/23 23/59/01");
&#13;
&#13;
&#13;

此函数将从数据库中获取输入。将其转换为时间戳并从中减去5.30小时(这是UTC和IST之间的差异)。最后一步是将其转换为本地。

答案 1 :(得分:0)

您也可以使用moment.js将日期从本地时间转换为utc,反之亦然。

moment('07-18-2013', 'MM-DD-YYYY').utc().format("YYYY-MM-DD HH:mm")

moment.utc('2014-02-19 05:24:32 AM').toDate();

答案 2 :(得分:0)

var date = input.split(" "); 
                date = date[0] + "T" + date[1].replace(/\//g, ":") + "+00"+":"+"00";
                date=date.replace("/","-");
                date=date.replace("/","-");
                alert(date);
                var ist = 19800000; //time zone is IST, which is 5.30 from UTC in milliseconds
                var utcDate = new Date(Date.parse(date)-ist).toUTCString();
                 alert(utcDate);

在日期之间维持“ - ”和时间之间的“:”非常重要。