如何复制'新的Date()'格式?

时间:2017-10-13 09:19:46

标签: angular angular-material angular-material2

我正在使用

  • Angular Material Date Picker
  • Moment.js
  • 公司的FireStore

我在做什么

  • 当我创建新项目并将其添加到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
   
  }

2 个答案:

答案 0 :(得分:2)

您可以尝试从字符串中删除片刻并将其格式化为:

&#13;
&#13;
// 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;
&#13;
&#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