我们正在访问一个API,该API可以安排日期/时间。我们需要检查计划的事情,所以我们不会在同一小时重复预订。 API返回的时间只是军事上的HH。但是,它正在使用UTC HH。因此,如果我们在下午1点安排一些东西,那它就会回来18点。

我正在尝试使用Moment.js将UTC 18更改回CST(本地时间)。我太失败了。

在下面的示例中,我从API获得18,下面的函数尝试转到本地时间(可能是CST)。但是该功能只是将其转换或保留为18。

function changeTakenHoursFromUTC (taken) {
if(taken) {
  for (var i = 0, len = taken.length; i < len; i++) {

  // construct a moment object with UTC-based input
  var utchour = taken[i].send_hour + ":00:00";
  console.log( "Hour before change " + utchour);
  var h = moment.utc(utchour);

  // convert using the TZDB identifier for US Central time
  h.tz('America/Chicago');
  h.local();
  console.log( "Hour before change " + h._i );
  var s = h.format("HH");
  taken[i].send_hour = s._i;
  console.log( "Taken hour back in taken is " + taken[i].send_hour );

  count += 1;

  if(i == len-1 && count > 0) {
    //
    return;
  }


  } // end for
} // end IF

} // end changeTakenHoursFromUTC

最佳答案

您只是在moment.utc(utchour, "HH")中缺少格式字符串

我创建此函数是为了提供一些帮助,例如:

function changeTakenHoursFromUTC (taken) {
  // construct a moment object with UTC-based input
  console.log( "Hour before change " + taken);
  var h = moment.utc(taken, "HH");
  console.log(h.format("HH"));
  h.local();
  console.log( "Hour after change " + h.format("HH"));
}

changeTakenHoursFromUTC(18);

关于javascript - 如何将UTC小时(HH)更改为本地时间(HH),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52415059/

10-13 00:28