Javascript 将服务器时区转换为localtime momentjs
我的服务器在EDT-4中,我正在尝试使用momentj将数据库中的日期转换为用户的本地时区。我什么都试过了,但没用 这些是我尝试过的: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:
//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
不会有任何区别。基本上,我们现在没有机会重现这个问题,因为你只是给我们一些零碎的信息。我用另一种方法修复了它,所以我无法测试它,但谢谢