显示偏移量的时间

时间:2016-01-31 15:46:15

标签: javascript

我需要以下列格式显示使用JS的时间:上午10:30

我必须使用的值有以下格式:

2016-01-31 15:13:33

我还需要考虑时间偏移,我得到以下格式: -360 ,这是-6小时。

我将jQuery用于我的项目,并使用了一个我使用的功能,在那里我将军事时间转换为标准:

function convHour( hr, mn ) {
    return (hr == 24 ? 'midnight' : (hr > 12 ? hr - 12 : hr) + ':' + (mn == 30 ? mn : '00') + (hr >= 12 ? ' pm' : ' am'));
}

所以,我试图将它们全部拉到一起。我错过了什么?

var mytime = '2016-01-31 15:13:33',
  offset = '-360',
  nutime = new Date(mytime + offset * 60),
  hr = nutime.getHours(),
  mn = nutime.getMinutes();

function convHour(hr, mn) {
  return (hr == 24 ? 'midnight' : (hr > 12 ? hr - 12 : hr) + ':' + (mn == 30 ? mn : '00') + (hr >= 12 ? ' pm' : ' am'));
}

alert(hr + ' ' + mn);

1 个答案:

答案 0 :(得分:1)

var mytime = '2016-01-31 15:13:33',
  offset = '-360',
  nutime = new Date(mytime + offset * 60),

您正在尝试使用格式化日期字符串加上以秒为单位的偏移量来构造日期,它不一致 - 您只能将秒数添加到秒。

这样的事情应该有效:

  var mytime = '2016-01-31 15:13:33',
  offset = -360;

  var nutime = new Date();
  mytime = mytime.replace(' ', 'T' );
  nutime.setTime(new Date( mytime ).getTime() + offset * 60 * 1000);

可替换地:

  var mytime = '2016-01-31 15:13:33',
  offset = '+06:00';

  var nutime = new Date();
  mytime = mytime.replace(' ', 'T' );  
  nutime = new Date( mytime + offset );

请注意,15:13:33是当地时间,15:13:33Z是GMT,15:13:33+06:00是GMT-6