将离子日期时间转换为小时和分钟

时间:2018-10-26 05:55:27

标签: javascript datetime ionic-framework ionic3

我正在使用以下离子日期时间分量

  <ion-item >
                    <ion-label>Time:</ion-label>
                    <ion-datetime displayFormat="h:mm A" pickerFormat="h mm A" [(ngModel)]="localEstDelTime"></ion-datetime>
              </ion-item>

在ionViewDidLoad上,我将localEstDelTime的值设置为:

var d = new Date()
 var dt = d.setTime(d.getTime() + (5.5 + 2)*60*60*1000)
this.localEstDelTime = dt.toISOString()

基本上已经添加了5.5小时以使其成为印度时区(格林尼治标准时间+ 5.5),对于该用例,应该显示时间加上当前时间的2小时。

现在,要求是说最终用户通过UI再增加了一个小时,那么我想在本地时区中获得该小时和时间。我的代码无法正常工作,如下所示:

 var storeEstDelTime =  Date.parse(this.localEstDelTime)
 var date = new Date(storeEstDelTime)
 var hours = date.getHours() + 5.5
 var minutes = date.getMinutes()

        var ampm = Number(hours) >= 12 ? 'PM' : 'AM';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour ’0′ should be ’12′
        var minutesStr = Number(minutes) < 10 ? '0'+ minutes : minutes;

        estDeliveryTime = hours + ':' + minutesStr + ' ' + ampm;

所以我需要estDeliveryTime为hh:mm AM / PM格式。我上面的代码需要修复。

2 个答案:

答案 0 :(得分:0)

始终将日期转换为UTC time set是一个好主意,因为这是一种常见的标准。就像输入日期一样,只需像这样转换日期:

var now = new Date(),
    utcDate = new Date(
        now.getUTCFullYear(),
        now.getUTCMonth(),
        now.getUTCDate(),
        now.getUTCHours(),
        now.getUTCMinutes(), 
        now.getUTCSeconds()
    );

现在,当您从用户那里获取交货时间(该额外小时)的输入时,请对该日期执行相同的操作,并将该小时添加到utcDate中,最后将UTC日期转换为GMT日期与IST相同,为5.5。

希望这会有所帮助:)

答案 1 :(得分:0)

  1. npm i --save date-fns

  2. 从 .ts 文件中的“date-fns”导入 {format}

  3. let example_time = "2019-11-30T14:42:30.951+08:00";

  4. format(new Date(example_time), "HH:mm");

  5. console.log(example_time) => '14:42'