离子日期时间绑定到纪元
ion-datetime bind to epoch
我有一个模型需要 date/time 作为 Unix Epoch 格式的毫秒。我试过使用 Moment 界面,Date | numeric 作为类型,我似乎无法正确处理。
我希望控件以人类可读的格式显示,选择器也同样,但我希望数据绑定模型是数字的。我不能使用管道 ("Cannot have a pipe in an action expression")。我是否应该删除双向数据绑定,转换 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 页面上,所以我真的希望它在其他任何地方都是数字。
作为 ion-datetime
的输入,您可以使用 public yourDate: string = new Date().toISOString();
。所以这是您要绑定到 ion-datetime
.
的值
如果你想要另一种格式,你可以这样做new Date(yourDate).getTime()
。如果你有这个 ISOString
,你总是可以将它解析回 Date
对象。
更新
使用管道和格式函数。
这里我们有一个单向数据绑定,它使用我的自定义 date
管道,即将数字日期格式化为 ISOString
。
(ngModelChange)
事件是 "other-way" 绑定,即将数值赋值给 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();
}
我有一个模型需要 date/time 作为 Unix Epoch 格式的毫秒。我试过使用 Moment 界面,Date | numeric 作为类型,我似乎无法正确处理。
我希望控件以人类可读的格式显示,选择器也同样,但我希望数据绑定模型是数字的。我不能使用管道 ("Cannot have a pipe in an action expression")。我是否应该删除双向数据绑定,转换 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 页面上,所以我真的希望它在其他任何地方都是数字。
作为 ion-datetime
的输入,您可以使用 public yourDate: string = new Date().toISOString();
。所以这是您要绑定到 ion-datetime
.
如果你想要另一种格式,你可以这样做new Date(yourDate).getTime()
。如果你有这个 ISOString
,你总是可以将它解析回 Date
对象。
更新
使用管道和格式函数。
这里我们有一个单向数据绑定,它使用我的自定义 date
管道,即将数字日期格式化为 ISOString
。
(ngModelChange)
事件是 "other-way" 绑定,即将数值赋值给 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();
}