在typescript/javascript中将ISO-8601字符串转换为本地日期
我在六年级学习。保存新记录时,我将表单值作为json保存在数据库中。如果最终用户希望显示现有记录,我将从json数据填充表单组件。但我在转换日期值时遇到了麻烦。我无法正确地选择我的本地约会对象。 我尝试了片刻,但没有成功:在typescript/javascript中将ISO-8601字符串转换为本地日期,javascript,typescript,momentjs,primeng-calendar,Javascript,Typescript,Momentjs,Primeng Calendar,我在六年级学习。保存新记录时,我将表单值作为json保存在数据库中。如果最终用户希望显示现有记录,我将从json数据填充表单组件。但我在转换日期值时遇到了麻烦。我无法正确地选择我的本地约会对象。 我尝试了片刻,但没有成功: console.log("string Value",stringValue); let date = moment(stringValue,"yyyy-mm-ddThh:mm:ss.fffZ");
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
控制台实际输出:日期2019年1月18日01:00:00
但预期控制台输出:日期2019年1月18日00:00:00
我尝试了“YYYY-MM-DDThh:MM:ss.fffZ”,但也不起作用
额外信息
保存数据:
process.data = JSON.stringify(this.form.getRawValue());
save(process);
html(素数):
您可以使用解析您的
'2019-01-17T21:00:00.000Z'
输入,因为它以UTC表示时间
默认情况下,力矩以本地时间解析和显示
如果要以UTC格式解析或显示某个时刻,可以使用moment.UTC()
而不是moment()
然后使用将其转换为本地时区
这里有一个活样本:
const stringValue='2019-01-17T21:00:00.000Z';
让date=moment.utc(stringValue.local();
console.log(“date”,date.format(“DD/MM/YYYY HH:MM:ss”)代码>
时区库构建的目的是“解析和显示任何时区中的日期”
要在特定时区中构造日期时间对象,请使用:
let now = moment.tz('Europe/Istanbul');
要查看UTC值,请使用
now.toISOString()
要查看本地时区值,请使用:
now.format('YYYY-MM-DD HH:mm:ss.SSS');
您在哪个时区?@str GMT+03:00 Istan是否可以检查计算机的时区设置?可能是由于DST配置错误造成的。您使用的浏览器/操作系统版本是什么?奇怪。如果输入字符串以“Z”结尾,moment应该知道它是UTC,没有显式的.UTC()
@VincenzoC,我尝试了它,但设置为form control时出错,thanks@TouffyZ
代表+00:00
,我认为这一刻可以隐含地理解输入是UTCmoment('2019-01-17T21:00:00.000Z')
将在我的答案中给出相同的代码输出,但我认为使用moment.utc()
和local()
更清晰。OP代码中最大的问题可能是yyyy-mm-ddThh:mm:ss.fffZ
tokens。
now.format('YYYY-MM-DD HH:mm:ss.SSS');