Reputation: 3
i'm currently trying to format dates i have in a "list". At the end i should get 06.11.2015. 14:51 02.11.2015. 13:56 06.11.2015. 14:51 02.11.2015. 13:56
but i get 02.11.2015. 13:56 02.11.2015. 13:56 02.11.2015. 13:56 02.11.2015. 13:56
I don't want same date for each elements. I'm not getting what is wrong in my code. Here's an overview to make it more clear : jsfiddle
Thanks a lot for your help !!
<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>
Upvotes: 0
Views: 46
Reputation: 93611
Your code simply gets all the date strings concatenated together, then applies the result to that long string.
Your code belongs inside the each
loop!
e.g. something like:
$(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);
};
});
});
Upvotes: 2
Reputation: 12892
You don't have to update each div on every iteration, just needed one. http://jsfiddle.net/wbz5mLdv/1/
Change:
$( ".start-date" ).each(function( index ) {
$( this ).text(today);
});
To:
$(".start-date").eq(i).text(today);
Upvotes: 0