如何用用户给定的时间将时间转换为Json格式?

时间:2015-05-23 11:58:41

标签: jquery json

我正在给出一段时间并转换为J SON,但是J SON对象返回的时间比用户时间段小15。如何在J SON对象中获得相同的时间段。

示例:

var starttime = 2015-05-26T00:00:00;var jsonconvert= new Date(starttime).toJSON();

我得到“2015-05-25T 18:30:00.000Z”的输出

如何获得我给出的时间输出?

1 个答案:

答案 0 :(得分:0)

toJSON()方法返回UTC日期,但Date()期望"本地日期" 。因此,有两种方法可以将UTC中的日期提供给Date()构造函数,或者稍后将时区添加到日期对象中

  

第一种方式(使用Date.UTC设置UTC日期而非本地日期)

var starttime = "2015-05-26T00:00:00";
var date=new Date(starttime);    //create a local date
var date= new Date(Date.UTC(date.getFullYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds()));
//this is UTC date set using Date.UTC
jsonconvert=date.toJSON(); //returns the UTC Date
alert(jsonconvert)
  

第二种方式(将TimeZone添加到日期,以便在toJSON期间它将减去timeZone并返回正确的日期)

var starttime = "2015-05-26T00:00:00";
var date=new Date(starttime);
date.setTime( date.getTime() - date.getTimezoneOffset()*60*1000 );//Add TimeZone to Local Date 
jsonconvert=date.toJSON()
alert(jsonconvert)

PS

  1. date.getTimezoneOffset()被减去,因为它返回负数 值如果时间早于UTC,反之亦然
  2. 您还必须将Z附加到字符串以使其更正 UTC日期时间字符串