[英]Converting ISO-8601 string to local date in typescript/javascript
我正在 Angular 6 中开发。当保存新记录时,我将表单值作为 json 保存在数据库中。如果最终用户想要显示存在记录,我会从 json 数据填充表单组件。但是我在转换日期值时遇到了麻烦。 我无法正确投射我的本地日期。 我已经尝试过,但没有奏效:
console.log("string Value",stringValue);
let date = moment(stringValue,"yyyy-mm-ddThh:mm:ss.fffZ");
console.log("date",date.format('DD/MM/YYY HH:mm:ss'));
字符串值输出:2019-01-17T21:00:00.000Z
控制台输出实际:日期 18/01/2019 01:00:00
但预计控制台输出:日期 18/01/2019 00:00:00
我试过“YYYY-MM-DDThh:mm:ss.fffZ”但也没有用。
额外的信息
保存数据:
process.data = JSON.stringify(this.form.getRawValue());
save(process);
html(primeng):
<p-calendar formControlName="startDate" dateFormat="dd.mm.yy"></p-calendar>
您可以使用moment.utc()
解析您的'2019-01-17T21:00:00.000Z'
输入,因为它表示 UTC 时间
默认情况下,时刻以本地时间解析和显示。
如果你想用 UTC 解析或显示一个时刻,你可以使用
moment.utc()
而不是moment()
。
然后使用local()
将其转换为本地时区。
这是一个实时示例:
const stringValue = '2019-01-17T21:00:00.000Z'; let date = moment.utc(stringValue).local(); console.log("date", date.format('DD/MM/YYYY HH:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
moment-timezone 库旨在“解析和显示任何时区中的日期”。
要在特定时区构造日期时间对象,请使用:
let now = moment.tz('Europe/Istanbul');
要查看 UTC 值,请使用
now.toISOString()
要查看本地时区值,请使用:
now.format('YYYY-MM-DD HH:mm:ss.SSS');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.