Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/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
Node.js Nodejs响应日期转换为本地时间_Node.js_Node Mysql - Fatal编程技术网

Node.js Nodejs响应日期转换为本地时间

Node.js Nodejs响应日期转换为本地时间,node.js,node-mysql,Node.js,Node Mysql,我创建了一个node.js应用程序,它从远程数据库获取一些数据并进行处理。其中一些数据是日期对象。当我从家里的本地站点查询远程数据库时,假设数据库中的数据是{dateOfEvent:“2014-04-13T00:00:00.000Z”},我得到的响应是{dateOfEvent:“2014-04-12T21:00:00.000Z”},对应于我的tymezone的utc偏移量。如果我从我的应用程序所在的云计算机发出相同的请求,它得到的响应是与其GMT-4时区对应的{dateOfEvent:“2014

我创建了一个node.js应用程序,它从远程数据库获取一些数据并进行处理。其中一些数据是日期对象。当我从家里的本地站点查询远程数据库时,假设数据库中的数据是
{dateOfEvent:“2014-04-13T00:00:00.000Z”}
,我得到的响应是
{dateOfEvent:“2014-04-12T21:00:00.000Z”}
,对应于我的tymezone的utc偏移量。如果我从我的应用程序所在的云计算机发出相同的请求,它得到的响应是与其GMT-4时区对应的
{dateOfEvent:“2014-04-13T04:00:00.000Z”}

...
var tz_offset = (new Date()).getTimezoneOffset() * 60 * 1000; // get TZ offset in milliseconds
var corrected_datetime = new Date(mysql_datetime.getTime() - tz_offset); // now corrected

node是否进行了一些自动日期时间转换,或者可能是node的mysql驱动程序?

我遇到了同样的问题。看起来node.js的mysql模块只接受mysql返回的任何日期时间字符串,并忽略可能存在的时区信息(例如,“Zulu时间”通常会出现一个Z)。生成的无时区datetime字符串似乎被赋予Date()构造函数,并作为本地datetime返回给您

也就是说,如果数据库以UTC时区存储日期,node.js MySQL查询将返回例如“2013-09-08T21:39:31.000Z”。 现在,如果进行查询的本地计算机位于GMT+7时区,那么node.js和mysql模块会将该日期字符串置于本地时区,并在该字符串上调用date(“2013-09-08T21:39:31.000 GMT-0700”),生成“2013-09-09T04:39:31 UTC”

您可以在本地TZ代码中纠正这一点,方法是将从MySQL接收的所有日期时间移回UTC的本地时间。(例如,如果您在GMT-7)您必须将所有MySQL日期向后移动7小时(再次假设您的MySQL数据库位于UTC时区)


希望这有帮助

我遇到了同样的问题。看起来node.js的mysql模块只接受mysql返回的任何日期时间字符串,并忽略可能存在的时区信息(例如,“Zulu时间”通常会出现一个Z)。生成的无时区datetime字符串似乎被赋予Date()构造函数,并作为本地datetime返回给您

也就是说,如果数据库以UTC时区存储日期,node.js MySQL查询将返回例如“2013-09-08T21:39:31.000Z”。 现在,如果进行查询的本地计算机位于GMT+7时区,那么node.js和mysql模块会将该日期字符串置于本地时区,并在该字符串上调用date(“2013-09-08T21:39:31.000 GMT-0700”),生成“2013-09-09T04:39:31 UTC”

您可以在本地TZ代码中纠正这一点,方法是将从MySQL接收的所有日期时间移回UTC的本地时间。(例如,如果您在GMT-7)您必须将所有MySQL日期向后移动7小时(再次假设您的MySQL数据库位于UTC时区)


希望这有帮助

我遇到了同样的问题。看起来node.js的mysql模块只接受mysql返回的任何日期时间字符串,并忽略可能存在的时区信息(例如,“Zulu时间”通常会出现一个Z)。生成的无时区datetime字符串似乎被赋予Date()构造函数,并作为本地datetime返回给您

也就是说,如果数据库以UTC时区存储日期,node.js MySQL查询将返回例如“2013-09-08T21:39:31.000Z”。 现在,如果进行查询的本地计算机位于GMT+7时区,那么node.js和mysql模块会将该日期字符串置于本地时区,并在该字符串上调用date(“2013-09-08T21:39:31.000 GMT-0700”),生成“2013-09-09T04:39:31 UTC”

您可以在本地TZ代码中纠正这一点,方法是将从MySQL接收的所有日期时间移回UTC的本地时间。(例如,如果您在GMT-7)您必须将所有MySQL日期向后移动7小时(再次假设您的MySQL数据库位于UTC时区)


希望这有帮助

我遇到了同样的问题。看起来node.js的mysql模块只接受mysql返回的任何日期时间字符串,并忽略可能存在的时区信息(例如,“Zulu时间”通常会出现一个Z)。生成的无时区datetime字符串似乎被赋予Date()构造函数,并作为本地datetime返回给您

也就是说,如果数据库以UTC时区存储日期,node.js MySQL查询将返回例如“2013-09-08T21:39:31.000Z”。 现在,如果进行查询的本地计算机位于GMT+7时区,那么node.js和mysql模块会将该日期字符串置于本地时区,并在该字符串上调用date(“2013-09-08T21:39:31.000 GMT-0700”),生成“2013-09-09T04:39:31 UTC”

您可以在本地TZ代码中纠正这一点,方法是将从MySQL接收的所有日期时间移回UTC的本地时间。(例如,如果您在GMT-7)您必须将所有MySQL日期向后移动7小时(再次假设您的MySQL数据库位于UTC时区)


希望这有助于

Node在将日期对象发送给您之前不会将其转换为本地时间,您可能正在客户端对这些日期执行某些操作。MySQL肯定会将日期保存在其本地时区中。在MySQL db中,日期保存在utc时区中。我没有以任何方式操纵它们,只是获取查询结果,或者使用调试器查看它,或者在控制台中编写它们。他们落后了3个小时,我想可能是mysql驱动程序做到了。Node在将日期对象发送给您之前不会将其转换为您的本地时间,您可能在客户端使用这些日期做了一些事情。mysql肯定会将日期保存在其本地时区中。在mysql db中,日期保存在utc时区中。我没有以任何方式操纵它们,只是获取查询结果,或者使用调试器查看它,或者在控制台中编写它们。他们落后了3个小时,我想可能是mysql驱动程序做到了,Node做到了