从服务器我得到一个datetime变量的格式:6/29/2011 4:52:48 PM,它是UTC时间。我想使用JavaScript将其转换为当前用户的浏览器时区。

如何使用JavaScript或jQuery来做到这一点?


当前回答

你可以使用momentjs,moment(date).format()总是会给出本地日期的结果。

额外的好处是,你可以以任何你想要的方式格式化。如。

moment().format('MMMM Do YYYY, h:mm:ss a'); // September 14th 2018, 12:51:03 pm
moment().format('dddd');                    // Friday
moment().format("MMM Do YY"); 

更多细节请参考Moment js网站

其他回答

我相信这是最好的解决方案:

  let date = new Date(objDate);
  date.setMinutes(date.getTimezoneOffset());

这将根据偏移量适当地更新您的日期,因为它是以分钟为单位的。

如果你不介意使用moment.js,并且你的时间是UTC时间,请使用以下格式:

moment.utc('6/29/2011 4:52:48 PM').toDate();

如果您的时间不是utc,而是您所知道的任何其他地区,则使用以下方法:

moment('6/29/2011 4:52:48 PM', 'MM-DD-YYYY', 'fr').toDate();

如果你的时间已经在本地,那么使用以下方法:

moment('6/29/2011 4:52:48 PM', 'MM-DD-YYYY');

我在safari/chrome/firefox浏览器中使用这种方法效果很好:

const localDate = new Date(`${utcDate.replace(/-/g, '/')} UTC`);

你可以使用moment.js文件来完成。

很简单,你只是提到了时区的位置。

示例:如果你要将你的datetime转换为亚洲/加尔各答时区,你必须只提到从moment.js中获得的时区地点的名称

var UTCDateTime="从UTC获得的日期"; var ISTleadTime =(时刻。tz (UTCDateTime,“非洲/阿比让”)).tz(“亚洲/加尔各答”)。格式(YYYY-MM-DD LT);

我有一个类似的问题,我使用以下代码代码(JavaScript)转换UTC到本地时间

let a = new Date() .toString a = a.getFullYear () () + "-" + ( a.getMonth () + 1) .toString()。padStart(2, "0") + "-" + a.getDate(). tostring()。padStart(“0”) console.log (a)