Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Javascript Angular 6 Typescript新日期是在UTC中创建的,但我需要在本地时区中创建_Javascript_Date - Fatal编程技术网

Javascript Angular 6 Typescript新日期是在UTC中创建的,但我需要在本地时区中创建

Javascript Angular 6 Typescript新日期是在UTC中创建的,但我需要在本地时区中创建,javascript,date,Javascript,Date,在我的文件HomeComponent.ts中(不是在模板html中)。我创建了一个新日期并在控制台中显示,如下所示: var fecha = new Date(); console.log(fecha); 我所在国家的时间现在是16:09(UTC-3),但控制台输出以UTC显示日期: Date 2018-12-20T19:09:32.910Z // the time is 19:09 我需要与“这个新日期”和数据库中保存的其他日期进行比较并执行一些操作,因此我需要在本地时区中创建新日期。

在我的文件HomeComponent.ts中(不是在模板html中)。我创建了一个新日期并在控制台中显示,如下所示:

var fecha = new Date();
console.log(fecha);
我所在国家的时间现在是16:09(UTC-3),但控制台输出以UTC显示日期:

Date 2018-12-20T19:09:32.910Z   // the time is 19:09
我需要与“这个新日期”和数据库中保存的其他日期进行比较并执行一些操作,因此我需要在本地时区中创建新日期。如何在本地时区中创建新日期

我所在国家的时间现在是16:09(utc-3),但控制台输出以utc显示日期

日期或日期时间是一种结构,它没有格式。如果要使用浏览器的时区显示格式化的日期字符串,请调用

var fecha=新日期();
console.log(“utc中的ISO8601:,fecha”);
log(“作为本地:,fecha.tolocalString())
如何在本地时区中创建新日期

日期没有时区,它们只是1970-01-01T00:00:00Z(时间值)的偏移量,因此实际上总是UTC。它们表示特定的时间点,可用于生成表示任何时区中等效日期和时间的字符串

本地偏移量来自主机系统,在创建日期和使用本地日期和时间值时使用(如有必要)。对于不考虑本地时区的操作,有等价的UTC方法。 默认的toString方法将为主机时区生成时间戳,ToIsString将使用UTC,ToLocalString可用于为任何时区生成时间戳。所有这些都将代表相同的UTC日期和时间,只是在不同的时区


比较日期时,比较的是UTC时间值,因为它为所有日期提供了一个公共因子。

16:09-03:00的可能重复时间与19:09Z的时间完全相同。默认的toString方法将使用本地时区,控制台可以执行它喜欢的操作,也可以使用其他方法,
console.log(fecha.toString())
将为您提供local.when我转换数据fecha.toLocalString()时,它不能再用作日期,因此我无法对其使用日期操作和比较it@matQ-见我答复的第一句<代码>日期或日期时间是一种结构,它没有格式。
只有当您想向某人显示日期时(例如在浏览器的DOM或csv导出中),才能转换为字符串。变量
fecha
是您需要使用的,它在创建时具有当前日期时间。您不需要对它做任何事情,它是正确的。@matQ-所以当您调用
console.log(fecha)时由于人的限制(我们不是机器,我们通常以视觉方式验证我们的环境),必须将其转换为字符串,并且当前日期时间的视觉形式以UTC时区的ISO8601符号表示。在我的情况下,我从Db收到一个日期,我需要与我的localtime进行比较,因此,我创建了一个新日期,但它是以UTC为单位创建的。例如,DB日期的时间是11:00,我的本地时间是16:09,因此分钟差是309分钟,而我的日期是以UTC为单位创建的,所以worng@matQ-您从DB收到的日期可能未正确转换为适当的时区。在发送/接收日期/时间时,确保服务器端代码使用ISO8601表示法,并且这些值以UTC为单位(使用Z作为后缀)。然后必须将服务器端字符串正确转换为日期类型,另请参见。