0

实际上我正在尝试将日期从 java 脚本日期转换为 ISO 日期格式,但显示的时间不正确。在这个时间是 14:30 但我得到 9:30 它应该是 2:30。我需要添加 30 分钟到我的时间。此功能用于将 JavaScript 日期转换为 ISO 数据。

function myFunction1()
{
 var val1="2013-08-08 14:30:59";
 var t = val1.split(/[- :]/);
    alert(t);
 d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
 d = new Date(d.getTime() + (30 * 60000));
 alert(ISODateString(d));
}


function ISODateString(d){
      function pad(n){return n<10 ? '0'+n : n}
      return d.getUTCFullYear()+'-'
          + pad(d.getUTCMonth()+1)+'-'
          + pad(d.getUTCDate()) +' '
          + pad(d.getUTCHours())+':'
          + pad(d.getUTCMinutes())+':'
          + pad(d.getUTCSeconds())
    }

如果您知道,请与我分享。我工作过jsfiddle

4

3 回答 3

1

不需要 UTC,因此将其删除。

基本上你正在寻找的是(转换为 12 小时时间格式)

pad(d.getHours() > 12 
              ? d.getHours() - 12 : d.getHours())

完整代码:

function ISODateString(d) {
    function pad(n) {
        return n < 10 ? '0' + n : n
    }
    return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' 
          + pad(d.getDate()) + ' ' + pad(d.getHours() > 12 
          ? d.getHours() - 12 : d.getHours()) 
          + ':' + pad(d.getMinutes()) + ':' + pad(d.getSeconds())
}

结果:

输入: 2013-08-08 14:30:59

output: 2013-08-08 03:00:59 //因为你增加了 30 分钟

JSFiddle

于 2013-08-08T12:50:45.373 回答
1

您的问题是您在本地时区解析输入,但在 UTC 时间输出 ISO 字符串。如果输入也是 UTC,则需要使用Date.UTC

function myFunction1() {
    var val1="2013-08-08 14:30:59";
    var t = val1.split(/[- :]/);
    alert(t);
    var d = Date.UTC(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
    d = new Date(d + (30 * 60000));
    alert("toISOString" in d ? d.toISOString() : ISODateString(d));
    //     if available then use native method
}
于 2013-08-08T12:45:47.213 回答
0
var date = new Date('2013-08-08 14:30:59');
var hours = ((date.getHours() + 11) % 12 + 1);
var minutes = date.getMinutes();

console.log(hours+':'+minutes);

小提琴:http: //jsfiddle.net/N5LDB/

于 2013-08-08T12:36:52.567 回答