ion-datetime绑定到纪元

时间:2018-05-10 10:05:59

标签: angular ionic-framework momentjs angular2-databinding

我有一个模型,需要Unix Epoch格式的日期/时间为毫秒。我尝试过使用Moment界面,Date |数字作为类型,我似乎无法正确。

我希望控件以人类可读的格式和选择器显示,但我希望数据绑定模型是数字。我不能使用管道("在动作表达式中不能有管道")。我应该删除双向数据绑定,翻译changeModel函数中的值并使用类似的函数填充person.date_of_birth吗?

html的

<ion-datetime displayFormat="MMM DD, YYYY" pickerFormat="MMM DD, YYYY" (ngModelChange)="changeModel($event)" [(ngModel)]="person.date_of_birth"></ion-datetime>

.TS:

let person={name: string, date_of_birth: numeric};

将模型写入移动设备上的本地数据库(pouchdb / sqlite),然后通过nodejs REST API与mongodb数据库同步。它只显示在这个html页面上,所以我真的希望它在其他任何地方都是数字。

1 个答案:

答案 0 :(得分:1)

作为ion-datetime的输入,您可以使用public yourDate: string = new Date().toISOString();。因此,这是您要绑定到ion-datetime的值。

如果您想要其他格式,可以执行此类new Date(yourDate).getTime()之类的操作。如果您有ISOString,则可以随时将其解析回Date个对象。

<强>更新

使用管道和格式化功能。

这里我们有一个使用我的自定义date管道的单向数据绑定,即将数字日期格式化为ISOString(ngModelChange)事件是“其他方式”绑定,即将数值赋值给date_of_birth(格式是自定义函数)。

<强> page.html中

<ion-datetime displayFormat="MMM DD, YYYY" 
    (ngModelChange)="date_of_birth=format($event)" 
    [ngModel]="date_of_birth | date"></ion-datetime> 

<强> date.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'date'
})
export class DatePipe implements PipeTransform {

  transform(value: any, args?: any): any {
    return new Date(value).toISOString();
  }

}

<强> page.ts

date_of_birth: number = new Date().getTime();

format(val) {
  return new Date(val).getTime();
}

工作StackBlitz