错误,未定义消息

时间:2013-05-03 23:01:47

标签: javascript xml

我正在解析XML文件,以便在我的Google地图中显示数据。一切都很好。我有一个来自我已解析的XML的元素叫做“expires”,这是ISO 8601中XML文件的日期。我有这个代码来格式化日期,当我输入原始静态ISO 8601格式的日期并输出它时效果很好通过dstring获取我的信息框。

这适用于格式化,但显示过期未定义错误。

    function dateFromString(expires) {

  var bits = expires.split(/[-T:+]/g);
  var d = new Date(bits[0], bits[1]-1, bits[2]);
  d.setHours(bits[3], bits[4], bits[5]);

  // Get supplied time zone offset in minutes
  var offsetMinutes = bits[6] * 60 + Number(bits[7]);
  var sign = /\d\d-\d\d:\d\d$/.test(expires)? '-' : '+';

  // Apply the sign
  offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes);

  // Apply offset and local timezone
  d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset())

  // d is now a local time equivalent to the supplied time
return d;

} 

var days = ["Sun","Mon","Tues","Wed","Thur","Fri","Sat"];
var months =['Jan','Feb','March','April','May','June','July','Aug','Sept','Oct','Nov','Dec'];
var ampm = " am";

var dt = (dateFromString(expires));
var yr = dt.getFullYear();
var mth = dt.getMonth();  // months in Javascript are 0-11 so May is month 4
mth = months[mth];
var dte = dt.getDate();
var dy = dt.getDay();  // days are 0-6
dy = days[dy];
var hrs = dt.getHours();
var h1 = hrs;
var mins = dt.getMinutes();

if (hrs >= 12) {ampm = " pm"}
if (hrs >= 13) {hrs = hrs - 12}
if (h1 == 0) {hrs = 12}

if (hrs <10) {hrs = "0" + hrs};  // if  leading zero desired
if (mins <10) {mins = "0" + mins};

var dtstring = dy + ", " + mth + " " + dte + ", " + yr + " at " + hrs + ":" + mins + ampm;

现在当我手动输入ISO 8601格式时......

var dt = (dateFromString('2013-05-02T11:08:00-6:00'));

它使用输出var dtstring正确格式化,所以我知道它有效。但它自然地显示了我所有输出数据的当前日期,因此我手动输入了一个日期戳,而不是从已解析的过期XML中定义var。我需要它来格式化我从XML文件解析的expires变量。

这是我被困的地方......

我不能流利使用Javascript,而且我已经研究了这么多,当我使用上面的代码定义expires时,我得到的expires没有定义,但它显然似乎是定义的。我可以直接将它定义到我的信息框中,它很好,但是当我将其定义为格式化时却没有。

我错过了什么或做错了什么?

CODE EXAMPLE

1 个答案:

答案 0 :(得分:0)

以下是将日期格式设置为ISO 8601

的示例

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date#Example.3A_ISO_8601_formatted_dates

您可以使用几种方法来设置日期/时间的格式,下面是关于此类示例的博客。

http://blog.stevenlevithan.com/archives/date-time-format

很难从你的措辞中理解你想要做什么,但这可能会帮助你更进一步。

祝你好运。