0

実際、日付をJavaスクリプトの日付からISOの日付形式に変換しようとしていますが、表示される時間が正しくありません.この時間は14:30ですが、9: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

Your problem is that you're parsing the input in your locale timezone, but outputting the ISO string in UTC time. If the input is UTC as well, you need to use 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 に答える