将服务器时区转换为localtime momentjs

时间:2015-10-20 16:58:50

标签: 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: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

2 个答案:

答案 0 :(得分:1)

你做的几乎一切都是正确的。您的主要问题是您将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和本地时间显示时间。有关详细信息,请参阅http://momentjs.com/docs/#/parsing/utc/

答案 1 :(得分:1)

显然在我的数据库中插入的时间不是unix时间,所以我在php中使用php time()函数将我的php代码改为而不是current_timestamp。然后我在php中使用了日期(' c',mytimedata)来使其以适当的格式在瞬间使用。然后简单地使用:

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