在 JavaScript/Jquery 中以 DD-Mon-YYY 格式获取当前日期

IT技术 javascript jquery date datetime
2021-03-14 21:37:11

我需要在 javascript 中获取日期格式为“DD-Mon-YYYY”。我问了一个问题,它被标记为与jQuery 日期格式重复

但是,问题中提供的答案是以“DD-MM-YYYY”格式而不是“DD-MON-YYYY”格式获取当前日期。其次,我没有使用 datepicker 插件。

你能帮我看看如何以“DD-Mon-YYYY”格式获取当前日期。

6个回答

javascript 中没有用于DD-Mon-YYYY.

您将不得不手动将它们放在一起。

答案的灵感来自: How to format a JavaScript date

// Attaching a new function  toShortFormat()  to any instance of Date() class

Date.prototype.toShortFormat = function() {

    let monthNames =["Jan","Feb","Mar","Apr",
                      "May","Jun","Jul","Aug",
                      "Sep", "Oct","Nov","Dec"];
    
    let day = this.getDate();
    
    let monthIndex = this.getMonth();
    let monthName = monthNames[monthIndex];
    
    let year = this.getFullYear();
    
    return `${day}-${monthName}-${year}`;  
}

// Now any Date object can be declared 
let anyDate = new Date(1528578000000);

// and it can represent itself in the custom format defined above.
console.log(anyDate.toShortFormat());    // 10-Jun-2018

let today = new Date();
console.log(today.toShortFormat());     // today's date

您可以使用toLocaleDateString并寻找接近 DD-mmm-YYYY 的格式(提示:'en-GB';您只需要将空格替换为 '-')。

const date = new Date();
const formattedDate = date.toLocaleDateString('en-GB', {
  day: 'numeric', month: 'short', year: 'numeric'
}).replace(/ /g, '-');
console.log(formattedDate);

@SujathaGirijala 您找到解决方案了吗?
2021-04-29 21:37:11
我的输出格式是 2019 年 12 月 11 日,这不是预期的。请帮帮我
2021-04-30 21:37:11
@SujathaGirijala 这可能是因为您使用的语言环境。本示例中使用了“en-GB”,它应该为您提供 DD Mon YYYY。如果您使用语言环境“en-US”,则会得到 Mon DD, YYYY。
2021-05-13 21:37:11

使用 Moment.js 库http://momentjs.com/它将为您省去很多麻烦。

moment().format('DD-MMM-YYYY');
2021-04-29 21:37:11
嗯,是。还有优秀的date-fns图书馆date-fns.org我的意思是对于今天的npm软件包,推出自己软件包几乎没有意义。
2021-05-01 21:37:11
有大量的日期库,每一个都应该有答案吗?许多比 moment.js 小得多。
2021-05-09 21:37:11
@RobG 现在确实有,但早在 2014 年,当我给出这个答案时,真的没什么可玩的。
2021-05-20 21:37:11

可以用 toLocaleDateString

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

<script>
const date = new Date();
const formattedDate = date.toLocaleDateString('en-GB', {
  day: '2-digit', month: 'short', year: 'numeric'
}).replace(/ /g, '-');
document.write(formattedDate);
</script>

我已经创建了一个自定义日期字符串格式函数,您可以使用它。

var  getDateString = function(date, format) {
        var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
        getPaddedComp = function(comp) {
            return ((parseInt(comp) < 10) ? ('0' + comp) : comp)
        },
        formattedDate = format,
        o = {
            "y+": date.getFullYear(), // year
            "M+": months[date.getMonth()], //month
            "d+": getPaddedComp(date.getDate()), //day
            "h+": getPaddedComp((date.getHours() > 12) ? date.getHours() % 12 : date.getHours()), //hour
             "H+": getPaddedComp(date.getHours()), //hour
            "m+": getPaddedComp(date.getMinutes()), //minute
            "s+": getPaddedComp(date.getSeconds()), //second
            "S+": getPaddedComp(date.getMilliseconds()), //millisecond,
            "b+": (date.getHours() >= 12) ? 'PM' : 'AM'
        };

        for (var k in o) {
            if (new RegExp("(" + k + ")").test(format)) {
                formattedDate = formattedDate.replace(RegExp.$1, o[k]);
            }
        }
        return formattedDate;
    };

现在假设你已经:-

    var date = "2014-07-12 10:54:11";

所以要格式化这个日期,你写:-

var formattedDate = getDateString(new Date(date), "d-M-y")
谢谢,上面的答案在我的语言环境中不起作用,但你的工作正常!
2021-04-30 21:37:11
您不需要滚动自己的日期函数。Date 对象已经有一个方法可以执行 OP 要求的操作
2021-05-10 21:37:11