我正在使用
我在做什么
当我创建新项目并将其添加到firestore时,我使用'new Date()'
这会为firestore创建以下格式: 2017年10月13日上午9:00:04 UTC + 1
这正是我想要的
素材日期选择器读取此内容非常精确,并显示 13/10/2017
我想做什么
如果我编辑项目并从物料日期选择器中选择一个新日期并点击更新,我想转换日期选择器值,该值目前为 18/12/2017 (例如......)
在写回数据库之前,我希望这种格式类似 2017年12月18日上午9:00:04 UTC + 1
问题
Component.html
<mat-form-field>
<input #newItemDate #picker matInput [matDatepicker]="picker" placeholder="Choose a date" (focus)="picker.open()" formControlName="item_date">
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
<button (click)="dateTest(newItemDate.value)"> Test Date </button>
Component.ts
显然,这里并不多:) - 但这是我需要转换日期的地方
dateTest(newItemDate) {
// newItemDate = 13/10/2017
// I need October 13, 2017 at 9:00:04 AM UTC+1
}
答案 0 :(得分:2)
您可以尝试从字符串中删除片刻并将其格式化为:
// dateTest(newItemDate) {
// This way you can make a moment right from the string :)
let newItemDate = moment('13/10/2017', 'DD/MM/YYYY').format("MMMM DD, YYYY H:MM:SS A Z");
console.log(newItemDate);
// }
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
&#13;
编辑:修复了片段中缺少的moment.js导入。
答案 1 :(得分:2)
您可以使用内置日期格式化功能:
dateTest(newItemDate) {
var formatedDate = new Date(newItemDate);
// UTC Date
console.log(formatedDate.toUTCString());
// ISO Date
console.log(formatedDate.toISOString());
}
链接到StackBlitz Demo。