日期:2014-05-16  浏览次数:20370 次

js高人快来救命啊,怎么将带年月日的时间字符串转换成时间格式,并计算时间差
例如:我想把“2011年5月25日 17:13”这样的字符串转换成时间格式,因为我要计算两个时间差,而这两个时间都必须要从字符串转换才能得到,麻烦神仙大侠们赐教,小弟愿虚心学习,在此先谢过了!

------解决方案--------------------
JScript code

                function getDateFromString(str)
                {
                        var reg = /^(\d+)年(\d+)月(\d+)日 (\d+):(\d+)/;
                        var s  = str.match(reg);
                        var result="";
                        if(s)
                        {
                              result = new Date(s[1],s[2],s[3],s[4],s[5]);                              
                        }
                        return result ;
                }
                
                var result = getDateFromString("2011年5月25日 17:13");
                alert(result);

------解决方案--------------------
sorry
月份忘记减一了。(日期的有效性没有考虑,如果需要自己加验证。)
result = new Date(s[1],parseInt(s[2])-1,s[3],s[4],s[5]);
------解决方案--------------------
JScript code
var s1 = "2011年5月25日 17:13";
var s2 = "2011年5月25日 1:12";
var d1 = convertToDate(s1);
var d2 = convertToDate(s2);
var secs = dateDiff(d1,d2);
alert(secs);
//返回相差多少秒
function dateDiff(d1,d2){ 
   var sp = d1 - d2;
  return (sp/1000);
}
function convertToDate(s){
  var arr =  s.split(/年|月|日\s|:/);
  var date = new Date(arr[0],arr[1],arr[2],arr[3],arr[4]); 
  return date;
}

------解决方案--------------------
借1楼代码用下
计算时间差转换成天的
JScript code

function getDateFromString(str){
        var reg = /^(\d+)年(\d+)月(\d+)日 (\d+):(\d+)/;
        var s  = str.match(reg);
        var result="";
        if(s)
        {
              result = new Date(s[1],s[2] - 1,s[3],s[4],s[5]);                              
        }
        return result ;
    }
                
    var result1 = getDateFromString("2011年5月25日 17:13");
    var result2 = getDateFromString("2010年12月12日 8:00");
    var result = (result1 - result2) / (1000 * 60 * 60 * 24);    //计算天
    alert(result);

------解决方案--------------------
两个日期可以比较一下谁比较大
用大的减去小的
计算结果带小数的话转换一下就OK