Javascript 减去数组的第一个和最后一个日期时间

Javascript 减去数组的第一个和最后一个日期时间,javascript,Javascript,我需要从XML文件中减去数组的第一个和最后一个元素(日期) 该字符串具有以下格式: 27/12/2012 13:09:15 27/12/2012 13:40:47 27/12/2012 14:56:43 有人知道怎么做减法吗 致意 我的职能是: function recorrido() { downloadUrl("dates.asp", function(data) { var xml = xmlParse(data); var markersPath = xml

我需要从XML文件中减去数组的第一个和最后一个元素(日期)

该字符串具有以下格式:

 27/12/2012 13:09:15
 27/12/2012 13:40:47
 27/12/2012 14:56:43
有人知道怎么做减法吗

致意

我的职能是:

 function recorrido() {

 downloadUrl("dates.asp", function(data) {
    var xml = xmlParse(data);
    var markersPath = xml.documentElement.getElementsByTagName("marker");   
    var path = [];


    for (var i = 0; i < markersPath.length; i++) {
    var lat = parseFloat(markersPath[i].getAttribute("lat"));
    var lng = parseFloat(markersPath[i].getAttribute("lng"));
    var timestamp= markersPath[i].getAttribute("timestamp");

    var time = 0;
    time+= Math.abs(timestamp[0]) - Math.abs(timestamp[timestamp.length-1]);

}//finish loop

alert(time);
alert(timestamp[0]);
alert(timestamp[timestamp.length-1]);




}); //end download url
}//end function
函数recorrido(){
下载URL(“dates.asp”,函数(数据){
var xml=xmlParse(数据);
var markersPath=xml.documentElement.getElementsByTagName(“标记”);
var路径=[];
对于(变量i=0;i
而C动态加载的xml是:

<markers>
<marker id="1" lat="37.1914496222793" lng="-3.72511240175617" timestamp="27/12/2012 16:37:03"/>
<marker id="2" lat="37.1914401951048" lng="-3.72517991386109" timestamp="27/12/2012 16:37:05"/>
<marker id="3" lat="37.1914308368611" lng="-3.72523615956726" timestamp="27/12/2012 16:37:07"/>
<marker id="4" lat="37.1914216855078" lng="-3.72525860611944" timestamp="27/12/2012 16:37:09"/>
<marker id="5" lat="37.1913854939084" lng="-3.72528079402709" timestamp="27/12/2012 16:42:38"/>
<marker id="6" lat="37.191367191181" lng="-3.72532568708827" timestamp="27/12/2012 16:42:40"/>
</markers>


所以我想得到的是车辆行驶的时间。

你的问题有两部分。数组访问和日期时间解析

对于阵列访问,对于阵列a,
a[0]
a[a.length-1]
分别是第一个和最后一个


Vanilla Javascript有一个
Date.parse
方法,但它不是非常灵活,并且不适用于特定的字符串格式。我更喜欢像这样的图书馆。一旦你做了解析,你就可以减去日期(大概是以毫秒为单位的时差?

我会把日期转换成毫秒,然后减去它得到差值

例如:

<script>
var date1 = getTimeInMillisecond('27/12/2012 13:09:15');
alert("Date 1: "+date1.getTime());

var date2 = getTimeInMillisecond('27/12/2012 14:56:43');
alert("Date 2: "+date2.getTime());

var diff = date2-date1;
alert(diff/1000 + " seconds");
alert(diff/1000/60 + " minutes");
alert(diff/1000/60/60 + " hours");

function getTimeInMillisecond(timeString) {
    var time1 = '27/12/2012 13:09:15';
    // create date object for time 1
    var dateInfo = timeString.match(/(\d+)\/(\d+)\/(\d+) (\d+):(\d+):(\d+)/);
    return new Date(dateInfo[3],dateInfo[2]-1,dateInfo[1],dateInfo[4],dateInfo[5],dateInfo[6]);
}
</script>

var date1=GetTimein毫秒('27/12/2012 13:09:15');
警报(“日期1:+date1.getTime());
var date2=GetTimein毫秒('27/12/2012 14:56:43');
警报(“日期2:+date2.getTime());
var diff=date2-date1;
警报(差值/1000+“秒”);
警报(差值/1000/60+“分钟”);
警报(差值/1000/60/60+“小时”);
函数GetTimeIn毫秒(时间字符串){
var time1='27/12/2012 13:09:15';
//为时间1创建日期对象
var dateInfo=timeString.match(/(\d+)\/(\d+)\/(\d+)(\d+):(\d+):(\d+/);
返回新日期(dateInfo[3],dateInfo[2]-1,dateInfo[1],dateInfo[4],dateInfo[5],dateInfo[6]);
}

希望这就是您想要实现的目标。

将转换为毫秒,然后计算差值:

a=['27/12/2012 13:09:15','27/12/2012 13:40:47','27/12/2012 14:56:43'];
alert(arrayDateSpan(a));
function dateToMilisec(str){
    var d=str.match(/([\d]{2})\/([\d]{2})\/([\d]{4}) ([\d]{2}):([\d]{2}):([\d]{2})/i)
    var date=new Date(d[3],d[2],d[1],d[4],d[5],d[6],0);
    return date.getTime();
}
function milisecToDays(unixmilisec){
    var unix=unixmilisec/1000;
    var day=60*60*24;
    var dayrest=unix%day;
    var days=(unix-dayrest)/day;
    var hourrest = dayrest%(60*60);
    var hours= (dayrest-hourrest)/(60*60);
    var minuterest = hourrest%60;
    var minutes=(hourrest-minuterest)/60;
    var seconds=minuterest;
    return days+' Days '+hours+':'+minutes+':'+seconds;

}
function arrayDateSpan(array){
    diff=dateToMilisec(array[array.length-1])-dateToMilisec(array[0]);
    return milisecToDays(diff);
}

您是否已经将其作为javascript数组,或者您不知道如何从XML生成数组并删除第一个和最后一个项?另外,如果您现在展示一段代码,这会很有帮助。我还推荐Moment.js。这是一个我一直在使用的优秀库:)您好,我已经更新了我的代码,但是当我将我的元素放入警报时,没有任何日期,只有时间戳[0]的数字5和数组最后一个元素的数字。两条快速注释。1.宁愿使用console.log代替alert,因为它不会阻止JS线程的执行。2.您的调试代码位于定义时间戳等的匿名函数之外。因此,这超出了范围。如果您想查看不带阴影的实际值,请将调试语句放在初始化时间戳的行之后。此外,如果不分析日期,则无法减去它们。将字符串相互减去是没有意义的。