【发布时间】:2017-03-24 09:25:28
【问题描述】:
我在尝试在 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 使用的引擎盖下)。
【问题讨论】:
-
日期的格式不是 TypeScript 可以影响的,它只是 javascript。
-
@Alex 所以即使 TypeScript
toLocale...函数将接受一个语言环境和一个选项对象,它们本质上是无用的? -
没有这样的 TypeScript 函数,它是一个 javascript 函数。 TypeScript 只知道 api 并为其提供类型化接口。
-
我现在明白了。看了一下转译的代码,它直接通过了原样。看起来问题出在 PhantomJS 及其实现日期 API 的方式上。从外观上看,它的日期格式与其他浏览器不同。在 Chrome 中运行它可以得到我期望的输出。
标签: javascript typescript