如何在JavaScript中将日期格式化为DD-MMM-YYYY?

4

因此,后端将日期作为'2019-05-30T00:00:00.000Z'提供给前端。

我试图在前端以30-May-2019的形式呈现。

所以...

let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );

我一直在尝试使用MDN JavaScript Date文档

但是,如何开始修改Date对象并控制所需的输出呢?


1
不要修改日期对象,使用它的方法输出你需要的内容(提示:.getDate.getMonth.getFullYear)。 - Jaromanda X
@JaromandaX 哦,明白了,那么就是要使用像.getDate,.getMonth,.getFullyear等方法来构建所需的输出。 太棒了,伙计 :) - js-learner
1
或者,如果你感到有冒险精神,你可以使用 Intl.DateTimeFormat 与适当的语言环境和选项。 - Jaromanda X
有很多关于如何格式化日期的问题,建议您先自己编写代码,遇到问题再提问。在new Date(Date.parse(string))中使用Date.parse是多余的,new Date(string)将产生相同的结果。 - RobG
3个回答

13
感谢所有对这个问题做出贡献的人。
我成功创建了一个可工作的函数:
formatDate(value) {
    let date = new Date(value);
    const day = date.toLocaleString('default', { day: '2-digit' });
    const month = date.toLocaleString('default', { month: 'short' });
    const year = date.toLocaleString('default', { year: 'numeric' });
    return day + '-' + month + '-' + year;
}

这与此答案非常相似。 - RobG

1

这里使用 toLocaleString() 方法获取月份的名称,否则你需要一个包含所有月份名称的数组来匹配 date.getMonth() 的输出,因为它只返回数字(从0开始计数)(例如,一月是0)

const monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];

month = monthNames[date.getMonth()];

let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );

console.log(`${date.getDate()}-${date.toLocaleString('default', { month: 'long' })}-${date.getFullYear()}`);

另一种方法是在其余的格式化中也使用 toLocaleString()

let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );

dateFormatted = date.toLocaleString('default',{day: 'numeric', month: 'long', year: 'numeric'});
console.log(dateFormatted);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat


1
function formatDate(dateString) {
let date = new Date(dateString),
    day = date.getDay(),
    month = date.getMonth(),
    year = date.getFullYear(),
    months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
      
return day + '-' + months[month] + '-' + year;
}

预定义函数和数组。


你听说过 Array.prototype.indexOf() 吗? - Yevhen Horbunkov
1
应该使用date.getDate()而不是date.getDay()。 - eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接