如何使用js将UTC日期转换为当地时间?

时间:2019-04-13 03:56:41

标签: javascript date

我想在页面中显示照片的上传日期,但是我只能根据服务器时区显示日期。

请允许我在格林尼治标准时间5:19在家里12号上传照片,因此服务器在00:30注册了13号。

我想要的是检索用户已知的日期(12月19日30:30)。

我要做的是获取客户端的时区,并将该分钟数保持在对象Date上,就像这样:

upload_date = response.upl_date;//This is the date I get from server (12:30)

var d = new Date();//Here I get the current date of client...
var timezone = d.getTimezoneOffset();//...to get the timezone offset in minutes (300)

var dd = new Date(upload_date);//Here I turn my server date into an object

dd.setMinutes(dd.getMinutes() - timezone);//Substract the minutes to the hour of the object

console.log(dd);//And voilá, I get 19:30, but the day keeps being 13

尽管分钟会影响对象日期的小时数,但不会影响日期,因此它始终是第13位而不是第12位。

例如,当它在服务器端为19:00,在客户端为14:00时,它当然可以完美工作,但是我该如何更改日期以适应时区变化呢?我应该尝试其他方式吗?还是if(){}的一些技巧?

1 个答案:

答案 0 :(得分:0)

我希望这对您有帮助:

var options = {
  timeZone: "America/New_York", //you can use any timezone here
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',
  hour: 'numeric',
  minute: 'numeric',
  second: 'numeric'
};

var formatter = new Intl.DateTimeFormat([], options);

var UTCTime = "2017-09-03T02:00:00Z";
var localTime = formatter.format(new Date(UTCTime));
var currentTime = formatter.format(new Date());
console.log(currentTime, localTime);