Как преобразовать / изменить формат даты с ММ / ДД / ГГГГ на месяц, год, год? - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь преобразовать / изменить дату моего блога с ММ / ДД / ГГГГ на месяц, год.Например, эту дату 11/12/2018 конвертировать в 12 ноября 2018 года. Есть ли способ сделать это правильно?

Я пробовал код, который должен работать.Однако код преобразовал / изменил дату каждого сообщения в блоге на последние опубликованные сообщения (дата).

Я попробовал этот код:

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var data = $('.date-text').text();
var arr = data.split('/');
$(".date-text").html(months[parseInt(arr[0]) - 1] + " " + arr[1] + ", " + arr[2]);

и код преобразовал все даты в последние опубликованные сообщения'дата, которая теперь отображается как 12 ноября 2018 г. 11.

Рабочий редактор: https://jsfiddle.net/s1b2fenk/

Изображение сайта после изменения даты:

enter image description here

Ответы [ 4 ]

0 голосов
/ 27 мая 2019

Ваша проблема в том, что в jQuery:

$(".date-text").html(...);

изменяет HTML всех элементов, выбранных с помощью .date-text , на одно и то же значение, поэтому все они в конечном итоге отображают одну и ту же дату.

Вы можете использовать метод jQuery .each , например:

$(".date-text").each(function (){
  var months = ["January", "February", "March", "April",
                "May", "June", "July", "August",
                "September", "October", "November", "December"];
  var arr = this.textContent.split('/');
  this.textContent = months[parseInt(arr[0]) - 1] + " " + arr[1] + ", " + arr[2];
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="date-text">11/12/2018</div>
<div class="date-text">10/1/2018</div>

Возможно, вам будет проще использовать POJS:

window.addEventListener('DOMContentLoaded', function () {
  document.querySelectorAll('.date-text').forEach(el => el.textContent = formatDateString(el.textContent))
}, false);

function formatDateString(s) {
  var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  var arr = s.split('/');
  return months[arr[0] - 1] + " " + arr[1] + ", " + arr[2];
}
<div class="date-text">11/12/2018</div>
<div class="date-text">10/1/2018</div>
0 голосов
/ 27 мая 2019

это потому, что есть много div с одним и тем же именем класса, что, когда вы делаете $('.class-name').html(), изменит все div с одним и тем же именем класса. вы можете попробовать задать разные классы или изменить содержимое json, когда вы получаете данные с сервера.

0 голосов
/ 27 мая 2019

Это с использованием чистого JavaScript и jQuery. Этот код не требуется любая другая библиотека, кроме jquery.

<div class="date-text-1">
11/12/2018
</div>

<div class="date-text-2">
10/1/2018
</div>
<div class="Converted-1">

</div>
<div class="Converted-2">

</div>

Это JavaScript:

$(document).ready(function() {
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

var data1 = $('.date-text-1').text();
var converteddate1=new Date(data1);
var formatedDate1=months[converteddate1.getMonth()]+' '+converteddate1.getDate()+','+converteddate1.getFullYear();
$('.Converted-1').text(formatedDate1);

var data2 = $('.date-text-2').text();
var converteddate2=new Date(data2);
var formatedDate2=months[converteddate2.getMonth()]+' '+converteddate2.getDate()+','+converteddate2.getFullYear();
$('.Converted-2').text(formatedDate2);
});
0 голосов
/ 27 мая 2019

Знаете ли вы о moment.js или date-fns?Это сделает это за вас.

В любом случае, ваша проблема определенно связана с тем, как вычисляются «данные».(и это не объясняется в вашем фрагменте кода).Вы можете console.log (data, arr) проверить их значение.

...