2015-11-09 8 views
0

Я сейчас пытаюсь отформатировать даты, которые у меня есть в «списке». В конце я должен получить 06.11.2015. 14:51 02.11.2015. 13:56 06.11.2015. 14:51 02.11.2015. 13:56Формат. Дата с javascript

но я получаю 02.11.2015. 13:56 02.11.2015. 13:56 02.11.2015. 13:56 02.11.2015. 13:56

Я не хочу такой же даты для каждого элемента. Я не понимаю, что не так в моем коде. Вот обзор, чтобы сделать его более понятным: jsfiddle

Большое спасибо за помощь!

<html> 
    <head> 
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script> 
    <script> 
$(document).ready(function(){ 

var date = $('.start-date').text(); 
      var strArray = date.match(/(\d+)/g); 
      var i = 0; 
     for (i = 0; i < strArray.length; i++) 
      { 
       var d = parseInt(strArray[i]); 
       var dateF = new Date (d); 
       var dd = dateF.getDate(); 
       var mm = dateF.getMonth() + 1; 
       var yyyy = dateF.getFullYear(); 
       var hh = dateF.getHours(); 
       var mn = dateF.getMinutes(); 
       if(dd<10){ 
       dd = '0' + dd 
       } 
       if(mm<10){ 
       mm='0'+mm 
       } 
       var today = dd+'.'+mm+'.'+yyyy+'. '+hh+':'+mn; 
       console.log(today); 


       $(".start-date").each(function(index) { 
        $(this).text(today); 
       }); 
      }; 
    }); 
</script> 
</head> 
<body> 
    <div class="start-date">/Date(1446817860000)/</div> 

<div class="start-date">/Date(1446468960000)/</div> 

<div class="start-date">/Date(1446817860000)/</div> 

<div class="start-date">/Date(1446468960000)/</div> 
</body> 
</html> 

ответ

2

Ваш код просто объединяет все строки даты, а затем применяет результат к этой длинной строке.

Ваш код принадлежит к петле each!

например. что-то вроде:

$(document).ready(function() { 

    $(".start-date").each(function (index) { 
     var date = $(this).text(); 
     var strArray = date.match(/(\d+)/g); 
     var i = 0; 
     for (i = 0; i < strArray.length; i++) { 
      var d = parseInt(strArray[i]); 
      var dateF = new Date(d); 
      var dd = dateF.getDate(); 
      var mm = dateF.getMonth() + 1; 
      var yyyy = dateF.getFullYear(); 
      var hh = dateF.getHours(); 
      var mn = dateF.getMinutes(); 
      if (dd < 10) { 
       dd = '0' + dd 
      } 
      if (mm < 10) { 
       mm = '0' + mm 
      } 
      var today = dd + '.' + mm + '.' + yyyy + '. ' + hh + ':' + mn; 
      console.log(today); 

      $(this).text(today); 
     }; 
    }); 
}); 
+0

Brilliant !!! Работает как шарм! Большое спасибо !!! – Gazier

+0

_ «Ваш код просто получает первое свидание» _ Это неправильно. '$ ('. start-date'). text()' возвращает конкатенированный текст всех согласованных элементов. Вот почему скрипка показывает ** последнюю ** дату – Andreas

+0

@Andreas: вы подумали бы после двух лет написания плагинов jQuery, с которыми я раньше сталкивался. Исправил комментарий. :) –

0

Вам не нужно обновлять каждый div на каждой итерации, просто нужно. http://jsfiddle.net/wbz5mLdv/1/

Изменение:

$(".start-date").each(function(index) { 
    $(this).text(today); 
}); 

To:

$(".start-date").eq(i).text(today); 
Смежные вопросы