将 ISO-8601 字符串转换为 typescript/javascript 中的本地日期
Converting ISO-8601 string to local date in typescript/javascript
我正在开发 Angular 6. 当新记录是 saved.If 最终用户想要显示存在的记录时,我在数据库中将表单值保持为 json,我填写表单组件来自 json data.But 我在转换日期值时遇到了麻烦。我无法正确投射我的本地日期。
我试过 moment,但没用:
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'));
string Value output: 2019-01-17T21:00:00.000Z
console output actual : date 18/01/2019 01:00:00
but console output expected : date 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 时间
By default, moment parses and displays in local time.
If you want to parse or display a moment in UTC, you can use moment.utc()
instead of 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 库构建为 "parse and display dates in any timezone"。
要在特定时区构造日期时间对象,请使用:
let now = moment.tz('Europe/Istanbul');
要查看 UTC 值,请使用
now.toISOString()
要查看本地时区值,请使用:
now.format('YYYY-MM-DD HH:mm:ss.SSS');
我正在开发 Angular 6. 当新记录是 saved.If 最终用户想要显示存在的记录时,我在数据库中将表单值保持为 json,我填写表单组件来自 json data.But 我在转换日期值时遇到了麻烦。我无法正确投射我的本地日期。 我试过 moment,但没用:
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'));
string Value output: 2019-01-17T21:00:00.000Z
console output actual : date 18/01/2019 01:00:00
but console output expected : date 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 时间
By default, moment parses and displays in local time.
If you want to parse or display a moment in UTC, you can use
moment.utc()
instead ofmoment()
.
然后使用 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 库构建为 "parse and display dates in any timezone"。
要在特定时区构造日期时间对象,请使用:
let now = moment.tz('Europe/Istanbul');
要查看 UTC 值,请使用
now.toISOString()
要查看本地时区值,请使用:
now.format('YYYY-MM-DD HH:mm:ss.SSS');