如何在 TypeScript 中格式化日期/时间?

新手上路,请多包涵

我在尝试在 TypeScript 中获取 Date 对象以按照我想要的方式格式化时遇到了一些麻烦。

我有一个类 Module 定义为:

export class Module {

    constructor(public id: number, public name: string, public description: string,
                 public lastUpdated: Date, public owner: string) { }

    getNiceLastUpdatedTime(): String {

        let options: Intl.DateTimeFormatOptions = {
            day: "numeric", month: "numeric", year: "numeric",
            hour: "2-digit", minute: "2-digit"
        };

        return this.lastUpdated.toLocaleDateString("en-GB", options) + " " + this.lastUpdated.toLocaleTimeString("en-GB", options);
    }
}

当我使用以下代码调用该方法时:

    let date = new Date(1478708162000); // 09/11/2016 16:16pm (GMT)
    let module = new Module(1, "Test", "description", date, "test owner");
    console.log(module.getNiceLastUpdatedTime());

我最终在控制台中打印了以下内容:

'9 November 2016 16:16:02 GMT'

我想看到的是:

09/11/2015 16:16

我查看了以下文档: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString,但我仍然看不到我在做什么错误(我知道这是一个 JavaScript API 文档,但我很确定这是 TypeScript 在后台使用的)。

原文由 Matt Watson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

选项 1: Momentjs:

安装:

 npm install moment --save

进口:

 import * as moment from 'moment';

用法:

 let formattedDate = (moment(yourDate)).format('DD-MMM-YYYY HH:mm:ss')

选项 2: 如果您正在执行 Angular,请使用 DatePipe:

进口:

 import { DatePipe } from '@angular/common';

用法:

 const datepipe: DatePipe = new DatePipe('en-US')
let formattedDate = datepipe.transform(yourDate, 'dd-MMM-YYYY HH:mm:ss')

原文由 WtFudgE 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题