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

2022-08-30 04:47:09

我一直在尝试在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在引擎盖下使用的东西)。


答案 1

如果你想要超时以及你想要的日期。Date.toLocaleString()

这是直接从我的控制台上发出的:

> new Date().toLocaleString()
> "11/10/2016, 11:49:36 AM"

然后,您可以输入区域设置字符串并设置字符串格式,以获得所需的精确输出。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString


答案 2

选项 1:时刻:

安装:

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')