【问题标题】:How to format a date in jQuery from full to YYYYMMDD?如何将 jQuery 中的日期从完整格式设置为 YYYYMMDD?
【发布时间】:2014-01-03 09:49:38
【问题描述】:

我正在使用 AJAX 从 XML 文件中获取数据并将其打印回给我。其中之一是日期,并使用以下代码:

jQuery(function(){
        $.ajax({
          url: 'http://www.sagittarius-digital.com/news.rss',
          dataType: 'xml'
        }).done(function(xml){
          var items = $(xml).find('item').map(function(){
                var $item = $(this);
                var array = '<div class="item">';
array += '<p>' + $item.find('pubDate').text() + '</p>';
  return array;

所以行:

 array += '<p>' + $item.find('pubDate').text() + '</p>';

带回这样的日期:

Mon, 18 Nov 2013 12:00:00 GMT

如何将其转换为 YYYMMDD?不需要时间。

Live version in action(大车,加载需要一点时间)

【问题讨论】:

标签: jquery date casting


【解决方案1】:

在我看来是一个有效的日期,所以用 new Date() 解析它

var date = new Date('Mon, 18 Nov 2013 12:00:00 GMT');

FIDDLE

在您的代码中,类似

ajax.done(function(xml){
      var items    = $(xml).find('item').map(function(){
      var $item    = $(this);
      var array    = '<div class="item">';
      var date     = new Date( $item.find('pubDate').text() );

      var year  = pad(date.getFullYear());
      var month = pad(date.getMonth() + 1);
      var day   = pad(date.getDate());

      var yyyymmdd = year + month + day;

      array += '<p>' + yyyymmdd + '</p>';

      return array;
  });

function pad(numb) {
    return (numb < 10 ? '0' : '') + numb;
}

【讨论】:

  • date.getMonth()+1 bcz jan is 0
  • 这如何适合我上面发布的代码?我对此很陌生。我需要从以下位置获取数据:array += '

    ' + $item.find('pubDate').text() + '

    ';
  • 这不是零填充的。 2014113 代表 11 月 3 日还是 1 月 13 日?
【解决方案2】:
var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
    + ('0' + (date.getMonth() + 1)).slice(-2)
    + '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when I wrote this comment

为了解释,.slice(-2) 给出了字符串的最后两个字符。

所以无论如何,我们可以将“0”添加到日期或月份,然后只要求最后两个,因为它们始终是我们想要的两个。

所以如果 MyDate.getMonth() 返回 9,它将是:

("0" + "9") // Giving us "09"

所以添加 .slice(-2) 给我们最后两个字符:

("0" + "9").slice(-2)

"09"

但如果 date.getMonth() 返回 10,它将是:

("0" + "10") // Giving us "010"

所以添加 .slice(-2) 会给我们最后两个字符,或者:

("0" + "10").slice(-2)

"10"

【讨论】:

    【解决方案3】:

    DateJs 转换应该很简单:

    <script type="text/javascript" src="date.js"></script>
    <script type="text/javascript">
        var d1 = Date.parse('Mon, 18 Nov 2013 12:00:00 GMT');
        alert(d1.toString('dd/mm/yyyy HH:mm:ss'));
    </script>
    

    【讨论】:

      【解决方案4】:

      您可以使用Date 对象处理它并根据您的需要获取格式。

      var yourdate = $item.find('pubDate').text();
      // Above gives you date in String form. But for getting date, 
         first create in date object like below
      var dt = new Date(yourdate);
      var newDt = dt.getFullYear()+""+(dt.getMonth()+1)+""+dt.getDate();
      // Output : 20131118
      array += '<p>' + newDt + '</p>';
      

      这里因为 getMonth() 给出 (0-11) 个月,所以加 1。

      更多详情您可以查看:http://www.w3schools.com/jsref/jsref_obj_date.asp

      【讨论】:

      • 如何适应上面的代码?对不起,我对这一切都很陌生。如何从 pubDate 中获取数据,并将该输出放在您拥有 Mon、18 等的“”中
      • @Francesca :更新了答案。查看更多详情
      • 恕我直言,它在 1 月至 9 月和第 1-9 天之前省略了前导零。例如,它会给出 201599 而不是今天的 20150909。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 2011-01-21
      相关资源
      最近更新 更多