【问题标题】:formatting a date with variables in jQuery在 jQuery 中使用变量格式化日期
【发布时间】:2013-11-19 09:19:51
【问题描述】:

我正在尝试格式化日期,以便可以使用比较函数对数据进行排序

$(xml).find("item").each(function () {
            var dateText = $(this).find("Date").text();
            var year = dateText.substr(0,4);
            var month = dateText.substr(4,2) ;
            var day = dateText.substring(6,2);
            var newDate = new Date(year, month, day);

当我显示 newDate 时,我得到这个:Mon Jul 03 2017 00:00:00 GMT-0700(Pacific Daylight Time),这与 2013 年和 2014 年的实际日期不接近。有没有人有建议至于正确格式化?谢谢!

【问题讨论】:

  • 嗯,这将取决于您的 XML 日期的格式。看看它是什么格式,并相应地调整 substring() 调用(或直接将其提供给 Date对象,如果它是兼容的格式)
  • 格式为yyyymmdd
  • 另外,大约 40 个条目具有此日期元素。其余元素没有它。会不会是这个问题?
  • 您真的需要查看数据。 console.log(dateText); console.log(year); console.log(month); console.log(day); 将向您展示它正在处理的数据及其结果(您应该在错误控制台中看到这些消息)
  • 是...首先检查dateText是否为空或未定义

标签: javascript jquery xml date


【解决方案1】:

这样的东西应该可以工作

var dateText = $(this).find("Date").text();

if( dateText && dateText.length===8){
            var year = dateText.substr(0,4);
            var month = dateText.substr(4,2) ;
            var day = dateText.substring(6,2);
            var newDate = new Date(year, month, day);
}else{
   dateText='TBD';
   newDate='TBD';
}

【讨论】:

  • 嘿查理:待定日期即将开始,但显示的日期与上面相同。我想这又回到了只有大约一半的项目包含“日期”元素的问题。我应该实现一个 for 循环来控制解析的项目数吗?
  • 不要关注问题...if 的想法是如果缺少 xml 中的元素,或者如果它返回长度小于 8 个字符的字符串,或者没有文本。如果 xml 中的日期中有任何空格,可能需要 $.trim
  • TDB 旁边的每个日期都显示为:2017 年 7 月 3 日星期一而不是我创建的日期我解析并放入新 date() 对象的日期都在 2013 年或 2014 年,所以日期格式不适用于我的输入。
  • 好的...你真的需要开始使用console.log(someVariable) 来查看代码中的变量,看看它们是否是你认为的那样。打开浏览器控制台查看输出
  • 好的,我添加了 console.log(newDate) 和 console.log(dateText)。当我在浏览器中运行该页面时,出现此消息:未捕获的 ReferenceError:未定义新日期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
相关资源
最近更新 更多