Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要将时间以正确的格式从JavaScript转换为ISODateString吗?_Javascript_Jquery_Date Format_Isodate - Fatal编程技术网

需要将时间以正确的格式从JavaScript转换为ISODateString吗?

需要将时间以正确的格式从JavaScript转换为ISODateString吗?,javascript,jquery,date-format,isodate,Javascript,Jquery,Date Format,Isodate,实际上,我正在尝试将日期从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

实际上,我正在尝试将日期从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())
    }
函数myFunction1()
{
var val1=“2013-08-08 14:30:59”;
var t=val1.分割(/[-:]/);
警报(t);
d=新日期(t[0],t[1]-1,t[2],t[3],t[4],t[5]);
d=新日期(d.getTime()+(30*60000));
警报(ISODateString(d));
}
函数ISODateString(d){
功能板(n){返回n

fiddle:

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


不需要UTC,因此将其删除

基本上你要找的是(转换成12小时的时间格式)

完整代码:

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())
}
函数ISODateString(d){
功能板(n){
返回n<10?'0'+n:n
}
返回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

输出:2013-08-08 03:00:59//因为您增加了30分钟


为什么当它是
14:30
时它应该是
2:30
?这应该是因为日期是在格林尼治时间创建的,而你的本地时区是IST。所以14:30被转换为格林尼治时间09:00+30分钟(=09:30)@InderSingh我很高兴我能提供帮助:)你能转换成24小时plzz:)@InderSingh试试这个
pad(d.getHours())
类似于
返回d.getFullYear()+'-'+pad(d.getMonth()+1)+'-'+pad(d.getDate())+'+pad(d.getHours())+':'+pad(d.getMinutes())+':'+pad(d.getSeconds())
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
}
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())
}