如何将convert/change日期格式从MM/DD/YYYY转换为年月日?

How to convert/change date format from MM/DD/YYYY to Month Date, Year?

我正在尝试 convert/change 我的博客日期从 MM/DD/YYYY 到年月日。例如,这个日期 11/12/2018 转换为 2018 年 11 月 12 日。有没有办法正确执行此操作?

我试过一个应该有效的代码。但是,代码 converted/changed 每个博客帖子的日期到最近发布的帖子(日期)。

我试过这段代码:

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]);

并且代码将所有日期转换为最近发布的帖子的日期,现在显示为 November 12, 2018 11.

工作编辑:https://jsfiddle.net/s1b2fenk/

日期更改后的网站图片:

你知道 moment.js 或 date-fns 吗?这将为您完成。

无论如何,您的问题肯定来自 "data" 的计算方式。 (并且在您的代码摘录中没有解释)。您可以 console.log(data, arr) 检查它们的值。

这是因为有很多 div 具有相同的 class 名称,当您 $('.class-name').html() 这样做时,它会更改所有 div 的名称相同的 class 名称。您可以尝试在从服务器获取数据时提供不同的 classes 或更改 json 的内容。

This is by using pure javascript and jQuery. This code does not require any other library except 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>

This is 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);
});

你的问题是 jQuery:

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

.date-text 选择的所有元素的 HTML 更改为相同的值,因此它们最终都显示相同的日期。

您可以使用 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>