Javascript 基于当前日期获取XML文件

Javascript 基于当前日期获取XML文件,javascript,xml,url,date,Javascript,Xml,Url,Date,我对使用javascript解析XML数据非常陌生,所以如果我的问题有点简单,请原谅 我使用标准的xmlHTTPRequest使用javascript解析XMl文件中的数据。我从中提取XML数据的URL的格式类似于:http://example.com/abcyymmdd-data.xml". url的(yymmdd)部分表示日期,文件每天更新。我想在url中插入一个javascript代码来代替yymmdd,以便每天解析一个新的XML文件。我怎样才能做到这一点 谢谢, Carlos首先,要获取

我对使用javascript解析XML数据非常陌生,所以如果我的问题有点简单,请原谅

我使用标准的xmlHTTPRequest使用javascript解析XMl文件中的数据。我从中提取XML数据的URL的格式类似于:http://example.com/abcyymmdd-data.xml". url的(yymmdd)部分表示日期,文件每天更新。我想在url中插入一个javascript代码来代替yymmdd,以便每天解析一个新的XML文件。我怎样才能做到这一点

谢谢,
Carlos

首先,要获取今天的日期,请使用:

var today = new Date;
要获取组件,请使用:

var date  = today.getDate();
var month = today.getMonth() + 1; // caveat, starts at 0
var year  = today.getFullYear();  // 4 numbers (e.g. 2011)
现在,您需要它的格式为
yymmdd
。因此,您需要从年份中删除前两个数字,并根据需要在日期和月份前添加一个
0

function zeropad(number) {
    var str = number.toString(); // number to string

    return str.length === 1 // if length is 1
            ? '0' + str     // prepend a 0
            : str;          // otherwise return string without modification
}
然后:

var formatted = year.toString().substring(2) // only the string from the first two numbers and on
                 + zeropad(month)            // month with 0 prepended
                 + zeropad(date);            // date with 0 prepended
然后,在XHR中,使用:

xhr.open("GET", "http://example.com/abc" + formatted + "-data.xml", true);

首先,要获取今天的日期,请使用:

var today = new Date;
要获取组件,请使用:

var date  = today.getDate();
var month = today.getMonth() + 1; // caveat, starts at 0
var year  = today.getFullYear();  // 4 numbers (e.g. 2011)
现在,您需要它的格式为
yymmdd
。因此,您需要从年份中删除前两个数字,并根据需要在日期和月份前添加一个
0

function zeropad(number) {
    var str = number.toString(); // number to string

    return str.length === 1 // if length is 1
            ? '0' + str     // prepend a 0
            : str;          // otherwise return string without modification
}
然后:

var formatted = year.toString().substring(2) // only the string from the first two numbers and on
                 + zeropad(month)            // month with 0 prepended
                 + zeropad(date);            // date with 0 prepended
然后,在XHR中,使用:

xhr.open("GET", "http://example.com/abc" + formatted + "-data.xml", true);

您可以在
yymmdd
格式中检索当前日期,如下所示:

var d = new Date();
var date_string = 
    d.getFullYear().toString().substring(2) +
    (d.getMonth () < 9 ? "0" : "") + (d.getMonth() + 1) +
    (d.getDate() < 10 ? "0" : "") + d.getDate();
var d=新日期();
变量日期\字符串=
d、 getFullYear().toString()子字符串(2)+
(d.getMonth()<9?“0”:“)+(d.getMonth()+1)+
(d.getDate()<10?:“)+d.getDate();

您可以在
yymmdd
格式中检索当前日期,如:

var d = new Date();
var date_string = 
    d.getFullYear().toString().substring(2) +
    (d.getMonth () < 9 ? "0" : "") + (d.getMonth() + 1) +
    (d.getDate() < 10 ? "0" : "") + d.getDate();
var d=新日期();
变量日期\字符串=
d、 getFullYear().toString()子字符串(2)+
(d.getMonth()<9?“0”:“)+(d.getMonth()+1)+
(d.getDate()<10?:“)+d.getDate();

@pimvbd:谢谢您的快速回复。我试图插入您的代码,但无法通过此方法检索xml数据。这很可能是我的错误,因为我不确定如何实现代码。我看到的唯一区别可能是导致问题的原因是,我使用的是“xmlhttp.open(GET,url,true)”,url是一个变量(即“var url=(location.toString().indexOf('file://'))!=-1?”:“abc10828 data.xml”;”此变量是因为我可能希望将xml存储在本地,以便最后一次下载可供脱机使用。谢谢,卡洛斯。@卡洛斯:请尝试在
之前删除该
,因为表达式尚未在此处结束。@pimvdb:对不起,额外的;是一个输入错误。它不是代码的一部分。我仍然无法使用t检索xml数据他的方法。@Carlos:你没有使用我的代码就管理它了吗?我相信XHR无论如何在本地都不起作用。在服务器上试试吧。我终于让它起作用了!你的例子非常有用。我必须将你的答案中的方法和上面来自@Andomar的答案结合起来。还必须使用单引号,并且没有空格插入日期变量。这是一个示例我的最后一个代码
code
var url=(location.toString().indexOf('file://')!=-1)“'fcx'+date_string+'-data.xml';xmlhttp=new-XMLHttpRequest();if(xmlhttp!=null){xmlhttp.onreadystatechange=stateChange;xmlhttp.open('GET',url,true,)
code
@pimvbd:感谢您的快速响应。我尝试插入您的代码,但无法通过此方法检索xml数据。这很可能是我自己的错误,因为我不确定如何实现代码。我看到的唯一区别可能是导致问题的原因是我使用的是“xmlhttp.open(GET,url,true)”url是一个var(即“var url=(location.toString().indexOf('file://')!=-1)?“”:“abc110828 data.xml”此变量是因为我可能希望将xml存储在本地,以便最后一次下载可供脱机使用。谢谢,卡洛斯。@卡洛斯:请尝试在
之前删除该
,因为表达式尚未在此处结束。@pimvdb:对不起,额外的;是一个输入错误。它不是代码的一部分。我仍然无法使用t检索xml数据他的方法。@Carlos:你没有使用我的代码就管理它了吗?我相信XHR无论如何在本地都不起作用。在服务器上试试吧。我终于让它起作用了!你的例子非常有用。我必须将你的答案中的方法和上面来自@Andomar的答案结合起来。还必须使用单引号,并且没有空格插入日期变量。这是一个示例我的最后一个代码
code
var url=(location.toString().indexOf('file://')!=-1)“'fcx'+date_string+'-data.xml';xmlhttp=new-XMLHttpRequest();if(xmlhttp!=null){xmlhttp.onreadystatechange=stateChange;xmlhttp.open('GET',url,true,)
code
谢谢你的提示。我可以按照你的建议格式化日期,但是当我将“日期字符串”变量插入xml url时仍然无法检索xml数据。下面是我如何输入它的:boldvar url=(location.toString().indexOf('file://')!=-1)?“+date_字符串+”-data.xml'**bold**然后我用XMLboldhttp.open调用了这个变量(GET,url,true)**bold**不确定我哪里出错了,但这可能是m语法中的一个简单错误。@Carlos:Use
alert(url)
或查看您的
url
包含的内容。顺便说一句,您可以使用backticks`在注释中引用代码。我终于成功了。我必须使用单引号而不是双引号来插入“+date\u string+”变量…非常感谢您的帮助。下面是我最后的代码
code
var url=(location.toString().indexOf('file://')!=-1)?“”:'fcx'+date_string+'-data.xml';xmlhttp=new-XMLHttpRequest();if(xmlhttp!=null){xmlhttp.onreadystatechange=stateChange;xmlhttp.open('GET',url,true,);
code
谢谢你的提示。我可以按照你的建议格式化日期,但在插入“date_string”时仍然无法检索xml数据xml url的变量。我是这样输入的:boldvar url=(location.toString().indexOf('file://')!=-1)?“+date_string+”-data.xml';**bold**然后我用boldxmlhttp.open(GET,url,true)**bold**调用了这个变量,我不确定哪里出错了,但是