打字稿格式日期到字符串格式采用客户端时区
Typescript Format Date to String format taking client Timezone
我有一个将在国际上使用的 angular 项目。在后端,所有日期都作为时间戳(日期 class)进行管理,在 angular 中,我将它们作为日期接收。
关键是我需要在“yyyy-MM-dd HH:mm”中将这些日期转换为客户端正在使用它的小时和分钟的时区,所以我应该需要读取浏览器时区然后转换日期,重点是我只能获取浏览器 timezoneOffset,我不知道如何使用特定的 timezoneOffset 转换日期或如何执行此操作。
this.statsServ.getLastDateUpdate().subscribe(
(lastDate : Date) => {
console.log(lastDate);
const timeZoneOffset = new Date().getTimezoneOffset();
console.log(`timezone offset:` + timeZoneOffset);
let dateString :string = formatDate(lastDate,"dd-MM-yyyy HH:mm");
console.log(dateString);
}
)
}
lastDate 是接收日期作为 Date class
我需要以这种格式 dd-MM-yyyy HH:mm 并根据浏览器客户端时区来格式化日期。
提前致谢。
如果没有看到一些代码,很难对你的问题给出一个完美的解释,但如果我猜对了,那就是你从后端接收了一个 UTC 日期格式,并希望在本地时区表示它,如果是这样的话;然后简单地将日期传递给 Date
class constructor
它会像这样
const event = new Date('05 October 2011 14:48 UTC');
console.log(event.toString());
// expected output: Wed Oct 05 2011 16:48:00 GMT+0200 (CEST)
// (note: your timezone may vary)
console.log(event.toISOString());
// expected output: 2011-10-05T14:48:00.000Z
编辑:
正如我之前提到的,将日期插入 Date
class constructor
将为您解决问题(它将占用主机的时区), 所以你的代码应该是这样的:
this.statsServ.getLastDateUpdate().subscribe(
(utcDate: Date) => {
console.log(utcDate);
const date = new Date(utcDate);
console.log(date);
}
)
}
并且强烈建议在你的组件中使用 DatePipe
,它会让你的代码看起来更干净。
DatePipe
在 .component.html
中的用法:
<h1>{{date | date: 'short'}}</h1>
希望能有所帮助。
我有一个将在国际上使用的 angular 项目。在后端,所有日期都作为时间戳(日期 class)进行管理,在 angular 中,我将它们作为日期接收。 关键是我需要在“yyyy-MM-dd HH:mm”中将这些日期转换为客户端正在使用它的小时和分钟的时区,所以我应该需要读取浏览器时区然后转换日期,重点是我只能获取浏览器 timezoneOffset,我不知道如何使用特定的 timezoneOffset 转换日期或如何执行此操作。
this.statsServ.getLastDateUpdate().subscribe(
(lastDate : Date) => {
console.log(lastDate);
const timeZoneOffset = new Date().getTimezoneOffset();
console.log(`timezone offset:` + timeZoneOffset);
let dateString :string = formatDate(lastDate,"dd-MM-yyyy HH:mm");
console.log(dateString);
}
)
}
lastDate 是接收日期作为 Date class 我需要以这种格式 dd-MM-yyyy HH:mm 并根据浏览器客户端时区来格式化日期。
提前致谢。
如果没有看到一些代码,很难对你的问题给出一个完美的解释,但如果我猜对了,那就是你从后端接收了一个 UTC 日期格式,并希望在本地时区表示它,如果是这样的话;然后简单地将日期传递给 Date
class constructor
它会像这样
const event = new Date('05 October 2011 14:48 UTC');
console.log(event.toString());
// expected output: Wed Oct 05 2011 16:48:00 GMT+0200 (CEST)
// (note: your timezone may vary)
console.log(event.toISOString());
// expected output: 2011-10-05T14:48:00.000Z
编辑:
正如我之前提到的,将日期插入 Date
class constructor
将为您解决问题(它将占用主机的时区), 所以你的代码应该是这样的:
this.statsServ.getLastDateUpdate().subscribe(
(utcDate: Date) => {
console.log(utcDate);
const date = new Date(utcDate);
console.log(date);
}
)
}
并且强烈建议在你的组件中使用 DatePipe
,它会让你的代码看起来更干净。
DatePipe
在 .component.html
中的用法:
<h1>{{date | date: 'short'}}</h1>
希望能有所帮助。