2017-02-14 6 views
-1

Я пытаюсь отформатировать некоторые даты json в таблице для более читаемого формата. Строка, возвращаемая из json, выглядит так: "2015-06-29T10:00:00.000Z".Как показать строку даты Json как DD/MM/YYYY в таблице

Время не важно, я просто хочу показать дату как dd/mm/yyyy.

Я пробовал использовать new date(detestring), но у меня, возможно, было это неправильно, так как он не работает. Вот полный код.

$(document).ready(function() { 
$.getJSON('opp.php', function(data) { 
    $.each(data.opportunities, function() { 
    $("table#outtodaytomorrow").append("<tr><td>" + this.number + "</td><td>" + new Date(this.starts_at) + "</td></tr>"); 
}); 
}); 
}); 

Любая помощь очень ценится.

+0

Try 'moment.js' –

+0

Вероятно дубликат [? * Где я могу найти документацию о форматировании даты в JavaScript *] (http://stackoverflow.com/questions/1056728/ где-can-i-find-documentation-on-formatting-a-date-in-javascript? s = 1 | 13.3026) или [* Как отформатировать дату JavaScript *] (http://stackoverflow.com/questions/ 3552461/как к формату-а-на JavaScript дата s = 2 |? 3,9424). – RobG

ответ

1

Вы должны создать свою собственную функцию, которая достигнет цели.

function formatDate(stringDate){ 
    var date=new Date(stringDate); 
    return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear(); 
} 

Ваш код:

$("table#outtodaytomorrow").append("<tr><td>" + this.number + "</td><td>" + formatDate(this.starts_at) + "</td></tr>"); 
+0

@ Alexandru-lonut Совершенно, это было именно то, что я искал. Я вижу, как это работает сейчас. Благодарю. – James

+0

Я говорил слишком рано, это, похоже, не работает, и просто вызывает некоторую ошибку. если я неправильно вызываю функцию – James

+1

Названия функций, начинающиеся с прописной буквы, по соглашению зарезервированы для конструкторов. 'this.starts_at' - это строка, вызов методов Date в строке не будет работать, вам нужно предварительно преобразовать ее в Date. – RobG

0

См Format date to MM/dd/yyyy in javascript

Во-первых, разобрать его на свидание с

var date = new Date(this.starts_at); 

Во-вторых, печатать дату по желанию

var dateStr = (date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear()) 

Вы получите "6/29/2015"

Для вашего конкретного экземпляра, это будет что-то вроде

$(document).ready(function() { 
    $.getJSON('opp.php', function(data) { 
    $.each(data.opportunities, function() { 
     var date = new Date(this.starts_at); 
     var dateStr = (date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear()) 
     $("table#outtodaytomorrow").append("<tr><td>" + this.number + "</td><td>" + dateStr + "</td></tr>"); 
    }); 
    }); 
}); 

Дробление компонент в различные части памяти, таких как «дата» и «СТРОКА-ДАТЫ» облегчает читать и понимать.

+0

Отлично, спасибо Зак. Это похоже на то, чем я был. Это может быть глупый вопрос, но как я могу добавить это в свой код, чтобы он работал для каждой строки таблицы? – James

+0

@ Джеймс, пожалуйста, взгляните на мой ответ. –

0

Вы можете использовать MomentJs для анализа первого ввода, а затем отформатировать его в желаемом формате.
Что-то вроде:

$(document).ready(function() { 
$.getJSON('opp.php', function(data) { 
    $.each(data.opportunities, function() { 
     $("table#outtodaytomorrow").append("<tr><td>" + this.number + "</td><td>" + moment(this.starts_at).format("DD/MM/YYYY") + "</td></tr>"); 
    }); 
}); 
}); 
+0

Это можно сделать в собственном javascript в 2 строках. 1, если вы достаточно коварны. Не нужно импортировать ненужную библиотеку. –

+0

Все может быть сделано в собственном javascript. Дело здесь в том, чтобы сэкономить время и сделать код чище. – Nicolas