Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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 将服务器时区转换为localtime momentjs_Javascript_Date_Timezone_Momentjs - Fatal编程技术网

Javascript 将服务器时区转换为localtime momentjs

Javascript 将服务器时区转换为localtime momentjs,javascript,date,timezone,momentjs,Javascript,Date,Timezone,Momentjs,我的服务器在EDT-4中,我正在尝试使用momentj将数据库中的日期转换为用户的本地时区。我什么都试过了,但没用 这些是我尝试过的: //1 var servertime= array[data].time var localtime= moment(servertime).toDate(); var time = moment(localTime).format('YYYY-MM-DD HH:mm:ss'); //Actual Database time: 2015-10-20 12:42:

我的服务器在EDT-4中,我正在尝试使用momentj将数据库中的日期转换为用户的本地时区。我什么都试过了,但没用

这些是我尝试过的:

//1
var servertime= array[data].time
var localtime= moment(servertime).toDate();
var time = moment(localTime).format('YYYY-MM-DD HH:mm:ss');
//Actual Database time: 2015-10-20 12:42:47    Output:2015-10-20 12:42:47

//2
var servertime= array[data].time
var localtime= moment.utc(servertime).toDate();
var time = moment(localTime).format('YYYY-MM-DD HH:mm:ss');
//Actual Database time: 2015-10-20 12:42:47    Output:2015-10-20 12:42:47
这一刻似乎根本改变不了它

例如,服务器上的UTC时间为:2015年10月20日17:29
我的计算机时钟UTC+1是2015年10月20日7:30

您所做的一切几乎都是正确的。您的主要问题是将javascript日期对象存储在
localtime
变量中

//I'm assuming your this is your server time. This assumes your server time is in UTC.
var servertime= '2015-10-20 12:42:47';
//Create a utc moment, then convert it to the local time. localtime is a momentjs object.
var localtime = moment.utc(servertime).local();
//format the local time
var time = localtime.format('YYYY-MM-DD HH:mm:ss');

.utc()
.local()
将时间分别转换为utc和本地时间。有关更多信息,请参阅。

显然,插入数据库的时间不是unix时间,因此我将php代码改为,而不是mysql use php time()函数中的当前时间戳。然后,我在php中使用date('c',mytimedata),使其格式适合在矩中使用。然后简单地使用:

 var localTime  = moment(array[data].time).toDate();

“它不起作用”永远是不够的信息。输入、期望输出和实际输出是什么?您是如何获取数据的?为什么您的服务器时区很重要?(除非您已经使用服务器的时区存储了日期,这几乎肯定是一个错误…)大概您必须在某个地方告知服务器时间是EDT?在第一个示例中,您没有这样做,在第二个示例中,您声称它是UTC。@JonSkeet我添加了输入输出。似乎它甚至没有改变时间。您已经展示了
localtime
是什么,但是您还没有展示如何计算出
servertime
是什么。但是您仍然没有展示如何从一开始获取数组。例如,它可能已经在UTC中,因此对其调用
UTC
不会有任何区别。基本上,我们现在没有机会重现这个问题,因为你只是给我们一些零碎的信息。我用另一种方法修复了它,所以我无法测试它,但谢谢