Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在typescript/javascript中将ISO-8601字符串转换为本地日期_Javascript_Typescript_Momentjs_Primeng Calendar - Fatal编程技术网

在typescript/javascript中将ISO-8601字符串转换为本地日期

在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");

我在六年级学习。保存新记录时,我将表单值作为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

控制台实际输出:日期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@Touffy
Z
代表
+00:00
,我认为这一刻可以隐含地理解输入是UTC
moment('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');