首页 文章

如何格式化JavaScript日期

提问于
浏览
1453

如何格式化JavaScript日期对象以打印为 10-Aug-2010

30 回答

  • 114

    Packaged Solution: moment.js

    如果你想使用一个解决方案来适应所有,我强烈建议使用moment.js,它也可以在许多语言环境/语言和大量其他功能中进行格式化 .

    安装:

    npm install momentyarn add moment (访问其他安装方法的链接)

    例:

    moment("2010-08-10").format("DD-MMM-YYYY")

    产量:

    2010年8月10日

    Manual Solution

    使用与Moment.js,Class DateTimeFormatter (Java)Class SimpleDateFormat (Java)类似的格式,我实现了一个全面的解决方案 formatDate(date, patternStr) ,其中代码易于阅读和修改 . 您可以显示日期,时间,上午/下午等 . 有关更多示例,请参阅代码 .

    例:

    formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss:S')

    formatDate 在下面的代码片段中实现)

    产量:

    2018年10月12日星期五18:11:23:445

    点击“运行代码段”即可试用该代码 .

    Date and Time Patterns

    yy = 2位数年份; yyyy =全年

    M =数字月; MM = 2位数月份; MMM =短月名; MMMM =完整的月份名称

    EEEE =完整的工作日名称; EEE =工作日短名称

    d =数字日; dd = 2位数日

    h =上午/下午; hh =上午/下午2位数; H =小时; HH = 2位数小时

    m =分钟; mm = 2位数分钟; aaa =上午/下午

    s =秒; ss = 2位数秒

    S =毫秒

    var monthNames = [
      "January", "February", "March", "April", "May", "June", "July",
      "August", "September", "October", "November", "December"
    ];
    var dayOfWeekNames = [
      "Sunday", "Monday", "Tuesday",
      "Wednesday", "Thursday", "Friday", "Saturday"
    ];
    function formatDate(date, patternStr){
        if (!patternStr) {
          patternStr = 'dd/mm/yyyy';
        }
        var day = date.getDate(),
            month = date.getMonth(),
            year = date.getFullYear(),
            hour = date.getHours(),
            minute = date.getMinutes(),
            second = date.getSeconds(),
            miliseconds = date.getMilliseconds(),
            h = hour % 12,
            hh = twoDigitPad(h),
            HH = twoDigitPad(hour),
            mm = twoDigitPad(minute),
            ss = twoDigitPad(second),
            aaa = hour < 12 ? 'AM' : 'PM',
            EEEE = dayOfWeekNames[date.getDay()],
            EEE = EEEE.substr(0, 3),
            dd = twoDigitPad(day),
            M = month + 1,
            MM = twoDigitPad(M),
            MMMM = monthNames[month],
            MMM = MMMM.substr(0, 3),
            yyyy = year + "",
            yy = yyyy.substr(2, 2)
        ;
        return patternStr
          .replace('hh', hh).replace('h', h)
          .replace('HH', HH).replace('H', hour)
          .replace('mm', mm).replace('m', minute)
          .replace('ss', ss).replace('s', second)
          .replace('S', miliseconds)
          .replace('dd', dd).replace('d', day)
          .replace('MMMM', MMMM).replace('MMM', MMM).replace('MM', MM).replace('M', M)
          .replace('EEEE', EEEE).replace('EEE', EEE)
          .replace('yyyy', yyyy)
          .replace('yy', yy)
          .replace('aaa', aaa)
        ;
    }
    function twoDigitPad(num) {
        return num < 10 ? "0" + num : num;
    }
    console.log(formatDate(new Date()));
    console.log(formatDate(new Date(), 'dd-MMM-yyyy')); //OP's request
    console.log(formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss:S aaa'));
    console.log(formatDate(new Date(), 'EEE, MMM d, yyyy HH:mm'));
    console.log(formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss:S'));
    console.log(formatDate(new Date(), 'M/dd/yyyy h:mmaaa'));
    
  • 1192

    你应该看一下date.js . 它添加了许多方便的帮助程序来处理日期,例如,在您的情况下:

    var date = Date.parse('2010-08-10');
    console.log(date.toString('dd-MMM-yyyy'));
    

    入门:http://www.datejs.com/2007/11/27/getting-started-with-datejs/

  • 543

    我可以在一行中使用没有库和没有Date方法获取您请求的格式,只需正则表达式:

    var d = (new Date()).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3');
    // date will be formatted as "14-Oct-2015" (pass any date object in place of 'new Date()')
    

    更新:正如@RobG所指出的,Date.prototype.toString()的输出是依赖于实现的 . 因此,如果您使用此解决方案,请谨慎使用并在必要时进行修改 . 在我的测试中,这在北美可靠地运行,主要浏览器(Chrome,Safari,Firefox和IE)都返回相同的字符串格式 .

  • 3

    嗨检查这是否有助于解决您的问题 .

    var d = new Date();
    
    var options = {   
        day: 'numeric',
        month: 'long', 
        year: 'numeric'
    };
    
    console.log(d.toLocaleDateString('en-ZA', options));
    

    Date to locate format

  • 6

    在JavaScript中格式化DateTimes的一种有用且灵活的方法是 Intl.DateTimeFormat

    var date = new Date();
    var options = { year: 'numeric', month: 'short', day: '2-digit'};
    var _resultDate = new Intl.DateTimeFormat('en-GB', options).format(date);
    // The _resultDate is: "12 Oct 2017"
    // Replace all spaces with - and then log it.
    console.log(_resultDate.replace(/ /g,'-'));
    

    结果是: "12-Oct-2017"

    可以使用options参数自定义日期和时间格式 .

    Intl.DateTimeFormat 对象是对象的构造函数,用于启用语言敏感的日期和时间格式 .

    句法

    new Intl.DateTimeFormat([locales[, options]])
    Intl.DateTimeFormat.call(this[, locales[, options]])
    

    Parameters

    locales

    可选的 . 带有BCP 47语言标记的字符串,或此类字符串的数组 . 有关locales参数的一般形式和解释,请参阅Intl页面 . 允许使用以下Unicode扩展密钥:

    nu
    Numbering system. Possible values include: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
    ca
    Calendar. Possible values include: "buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".
    

    Options

    可选的 . 具有以下部分或全部属性的对象:

    localeMatcher

    要使用的区域设置匹配算法 . 可能的值为 "lookup""best fit" ;默认值为 "best fit" . 有关此选项的信息,请参阅Intl页面 .

    timeZone

    要使用的时区 . 唯一值实现必须识别的是 "UTC" ;默认值是运行时的默认时区 . 实现还可以识别IANA时区数据库的时区名称,例如 "Asia/Shanghai""Asia/Kolkata""America/New_York" .

    hour12

    是否使用12小时的时间(而不是24小时的时间) . 可能的值为 truefalse ;默认值取决于语言环境 .

    formatMatcher

    要使用的格式匹配算法 . 可能的值为 "basic""best fit" ;默认值为 "best fit" . 有关使用此属性的信息,请参阅以下段落 .

    以下属性描述了在格式化输出中使用的日期时间组件及其所需的表示形式 . 需要实现至少支持以下子集:

    weekday, year, month, day, hour, minute, second
    weekday, year, month, day
    year, month, day
    year, month
    month, day
    hour, minute, second
    hour, minute
    

    实现可以支持其他子集,并且将针对所有可用的子集表示组合协商请求以找到最佳匹配 . 有两种算法可用于此协商,并由formatMatcher属性选择:完全指定的 "basic" 算法和依赖于实现的算法"best fit"算法 .

    weekday

    工作日的代表 . 可能的值为 "narrow"3752325"long" .

    era

    时代的代表 . 可能的值为 "narrow"3752329"long" .

    year

    年度代表 . 可能的值为 "numeric"3775333 .

    month

    本月的代表 . 可能的值为 "numeric"3775336"narrow""short""long" .

    day

    当天的代表 . 可能的值为 "numeric""2-digit" .

    hour

    小时的表示 . 可能的值为 "numeric""2-digit" .

    minute

    分钟的表示 . 可能的值为 "numeric""2-digit" .

    second

    第二个的表示 . 可能的值为 "numeric""2-digit" .

    timeZoneName

    时区名称的表示形式 . 可能的值为 "short""long" . 默认值对于每个日期时间组件属性未定义,但如果未定义所有组件属性,则假定年,月和日为 "numeric" .

    Check Online

    More Details

  • 85

    如果你在项目中是 already using jQuery UI ,你可以这样做:

    var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));
    
    // formatted will be 'Jul 8, 2014'
    

    可以使用一些要使用的日期选择器日期格式选项here .

  • 6

    好吧,我想要的是将今天的日期转换为像2012-06-23这样的MySQL友好日期字符串,并在我的一个查询中将该字符串用作参数 . 我发现的简单解决方案是这样的:

    var today = new Date().toISOString().slice(0, 10);
    

    请记住,上述解决方案确实 not 考虑了您的时区偏移量 .

    您可以考虑使用此功能:

    function toJSONLocal (date) {
        var local = new Date(date);
        local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
        return local.toJSON().slice(0, 10);
    }
    

    如果您在当天的开始/结束时执行此代码,这将为您提供正确的日期 .

  • 371

    使用toLocaleDateString();

    toLocaleDateString() 方法返回一个字符串,其中包含日期日期部分的语言敏感表示 . locales和options参数允许应用程序指定应使用其格式约定的语言,并允许自定义函数的行为 .

    您可以在不同键的选项中传递的值:

    • day:
      当天的代表 .
      可能的值为"numeric","2-digit" .

    • weekday:
      工作日的代表 .
      可能的值为"narrow","short","long" .

    • year:
      年度代表 .
      可能的值为"numeric",3775207 .

    • month:
      本月的代表 .
      可能的值为"numeric","2-digit","narrow","short","long" .

    • hour:
      小时的表示 .
      可能的值为"numeric","2-digit" .

    • minute: 分钟的表示 .
      可能的值为"numeric","2-digit" .

    • second:
      第二个的表示 .
      可能的值为"numeric",2位“ .

    所有这些键都是可选的 . 您可以根据需要更改选项值的数量,这也将反映每个日期时间项的存在 .

    注意:如果您只想配置内容选项,但仍使用当前区域设置,则为第一个参数传递 null 将导致错误 . 请改用 undefined .

    对于不同的语言:

    • "en-US": 英语

    • "hi-IN": 对于印地语

    • "ja-JP": 日语

    您可以使用更多语言选项 .

    例如

    var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
    var today  = new Date();
    
    console.log(today.toLocaleDateString("en-US")); // 9/17/2016
    console.log(today.toLocaleDateString("en-US", options)); // Saturday, September 17, 2016
    console.log(today.toLocaleDateString("hi-IN", options)); // शनिवार, 17 सितंबर 2016
    

    您也可以将 toLocaleString() 方法用于相同目的 . 唯一的区别是此功能提供了不传递任何选项的时间 .

    // Example
    9/17/2016, 1:21:34 PM
    

    参考文献:

  • 7

    如果你想要一个简短的,人类可读的功能 - 这很容易调整,以适应你 .

    timeStamp 参数是1970年以来的毫秒数 - 它由 new Date().getTime() 和许多其他设备返回...

    好的,我改变了主意 . 我为零填充添加了一个额外的功能 . 诅咒!

    function zeroPad(aNumber) {
         return ("0"+aNumber).slice(-2);
     }
     function humanTime(timeStamp) {
        var M = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
        var D = new Date(timeStamp); // 23 Aug 2016 16:45:59 <-- Desired format.
        return D.getDate() + " " + M[D.getMonth()] + " " + D.getFullYear() + " " + D.getHours() + ":" + zeroPad(d.getMinutes()) + ":" + zeroPad(D.getSeconds());
     }
    
  • 16

    注意:下面有更好的答案 . 这个答案写于2010年,从那时起就有了更新更好的解决方案 . OP应接受另一个答案 .

    function formatDate(date) {
      var monthNames = [
        "January", "February", "March",
        "April", "May", "June", "July",
        "August", "September", "October",
        "November", "December"
      ];
    
      var day = date.getDate();
      var monthIndex = date.getMonth();
      var year = date.getFullYear();
    
      return day + ' ' + monthNames[monthIndex] + ' ' + year;
    }
    
    console.log(formatDate(new Date()));  // show current date-time in console
    

    您可以编辑数组 monthNames 以使用Jan,Feb,Mar等 .

  • 939

    任何人都在寻找一个非常简单的ES6解决方案来复制,粘贴和采用:

    const dateToString = d => `${d.getFullYear()}-${('00' + (d.getMonth() + 1)).slice(-2)}-${('00' + d.getDate()).slice(-2)}` 
    
    // how to use:
    const myDate = new Date(Date.parse('04 Dec 1995 00:12:00 GMT'))
    console.log(dateToString(myDate)) // 1995-12-04
    
  • 12

    这是我刚刚编写的一些代码,用于处理我正在处理的项目的日期格式 . 它模仿PHP日期格式化功能以满足我的需求 . 随意使用它,它只是扩展已存在的Date()对象 . 这可能不是最优雅的解决方案,但它可以满足我的需求 .

    var d = new Date(); 
    d_string = d.format("m/d/Y h:i:s");
    
    /**************************************
     * Date class extension
     * 
     */
        // Provide month names
        Date.prototype.getMonthName = function(){
            var month_names = [
                                'January',
                                'February',
                                'March',
                                'April',
                                'May',
                                'June',
                                'July',
                                'August',
                                'September',
                                'October',
                                'November',
                                'December'
                            ];
    
            return month_names[this.getMonth()];
        }
    
        // Provide month abbreviation
        Date.prototype.getMonthAbbr = function(){
            var month_abbrs = [
                                'Jan',
                                'Feb',
                                'Mar',
                                'Apr',
                                'May',
                                'Jun',
                                'Jul',
                                'Aug',
                                'Sep',
                                'Oct',
                                'Nov',
                                'Dec'
                            ];
    
            return month_abbrs[this.getMonth()];
        }
    
        // Provide full day of week name
        Date.prototype.getDayFull = function(){
            var days_full = [
                                'Sunday',
                                'Monday',
                                'Tuesday',
                                'Wednesday',
                                'Thursday',
                                'Friday',
                                'Saturday'
                            ];
            return days_full[this.getDay()];
        };
    
        // Provide full day of week name
        Date.prototype.getDayAbbr = function(){
            var days_abbr = [
                                'Sun',
                                'Mon',
                                'Tue',
                                'Wed',
                                'Thur',
                                'Fri',
                                'Sat'
                            ];
            return days_abbr[this.getDay()];
        };
    
        // Provide the day of year 1-365
        Date.prototype.getDayOfYear = function() {
            var onejan = new Date(this.getFullYear(),0,1);
            return Math.ceil((this - onejan) / 86400000);
        };
    
        // Provide the day suffix (st,nd,rd,th)
        Date.prototype.getDaySuffix = function() {
            var d = this.getDate();
            var sfx = ["th","st","nd","rd"];
            var val = d%100;
    
            return (sfx[(val-20)%10] || sfx[val] || sfx[0]);
        };
    
        // Provide Week of Year
        Date.prototype.getWeekOfYear = function() {
            var onejan = new Date(this.getFullYear(),0,1);
            return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);
        } 
    
        // Provide if it is a leap year or not
        Date.prototype.isLeapYear = function(){
            var yr = this.getFullYear();
    
            if ((parseInt(yr)%4) == 0){
                if (parseInt(yr)%100 == 0){
                    if (parseInt(yr)%400 != 0){
                        return false;
                    }
                    if (parseInt(yr)%400 == 0){
                        return true;
                    }
                }
                if (parseInt(yr)%100 != 0){
                    return true;
                }
            }
            if ((parseInt(yr)%4) != 0){
                return false;
            } 
        };
    
        // Provide Number of Days in a given month
        Date.prototype.getMonthDayCount = function() {
            var month_day_counts = [
                                        31,
                                        this.isLeapYear() ? 29 : 28,
                                        31,
                                        30,
                                        31,
                                        30,
                                        31,
                                        31,
                                        30,
                                        31,
                                        30,
                                        31
                                    ];
    
            return month_day_counts[this.getMonth()];
        } 
    
        // format provided date into this.format format
        Date.prototype.format = function(dateFormat){
            // break apart format string into array of characters
            dateFormat = dateFormat.split("");
    
            var date = this.getDate(),
                month = this.getMonth(),
                hours = this.getHours(),
                minutes = this.getMinutes(),
                seconds = this.getSeconds();
            // get all date properties ( based on PHP date object functionality )
            var date_props = {
                d: date < 10 ? '0'+date : date,
                D: this.getDayAbbr(),
                j: this.getDate(),
                l: this.getDayFull(),
                S: this.getDaySuffix(),
                w: this.getDay(),
                z: this.getDayOfYear(),
                W: this.getWeekOfYear(),
                F: this.getMonthName(),
                m: month < 10 ? '0'+(month+1) : month+1,
                M: this.getMonthAbbr(),
                n: month+1,
                t: this.getMonthDayCount(),
                L: this.isLeapYear() ? '1' : '0',
                Y: this.getFullYear(),
                y: this.getFullYear()+''.substring(2,4),
                a: hours > 12 ? 'pm' : 'am',
                A: hours > 12 ? 'PM' : 'AM',
                g: hours % 12 > 0 ? hours % 12 : 12,
                G: hours > 0 ? hours : "12",
                h: hours % 12 > 0 ? hours % 12 : 12,
                H: hours,
                i: minutes < 10 ? '0' + minutes : minutes,
                s: seconds < 10 ? '0' + seconds : seconds           
            };
    
            // loop through format array of characters and add matching data else add the format character (:,/, etc.)
            var date_string = "";
            for(var i=0;i<dateFormat.length;i++){
                var f = dateFormat[i];
                if(f.match(/[a-zA-Z]/g)){
                    date_string += date_props[f] ? date_props[f] : '';
                } else {
                    date_string += f;
                }
            }
    
            return date_string;
        };
    /*
     *
     * END - Date class extension
     * 
     ************************************/
    
  • 12

    @Sébastien - 替代所有浏览器支持

    new Date(parseInt(496407600)*1000).toLocaleDateString('de-DE', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit'
    }).replace(/\./g, '/');
    

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

  • 30

    Sugar.js具有对Date对象的出色扩展,包括Date.format方法 .

    文档中的示例:

    Date.create().format('{Weekday} {Month} {dd}, {yyyy}');
    
    Date.create().format('{12hr}:{mm}{tt}')
    
  • 13

    我想你可以使用 non-standard Date方法 toLocaleFormat(formatString)

    formatString: C中strftime()函数所需格式的格式字符串 .

    var today = new Date();
    today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011
    

    References:

  • 320

    OK ,我们有一个名为 Intl 的东西,这对于在JavaScript中格式化日期非常有用:

    您的日期如下:

    var date = '10/8/2010';
    

    并使用下面的新Date()更改为Date:

    date = new Date(date);
    

    现在你可以使用 locales 列表以任何方式格式化它,如下所示:

    date = new Intl.DateTimeFormat('en-AU').format(date); // Australian date format: "8/10/2010"
    
    date = new Intl.DateTimeFormat('en-US').format(date); // USA date format: "10/8/2010"
    
    date = new Intl.DateTimeFormat('ar-EG').format(date);  // Arabic date format: "٨‏/١٠‏/٢٠١٠"
    

    如果您确实需要上面提到的格式,您可以:

    date = new Date(Date.UTC(2010, 7, 10, 0, 0, 0));
    var options = {year: "numeric", month: "short", day: "numeric"};
    date = new Intl.DateTimeFormat("en-AU", options).format(date).replace(/\s/g, '-');
    

    结果将是:

    "10-Aug-2010"
    

    有关 ECMAScript Internationalization API (Intl) 的更多详细信息,请访问here .

  • 92

    自定义格式化功能:

    对于固定格式,一个简单的功能可以完成工作 . 以下示例生成国际格式YYYY-MM-DD:

    function dateToYMD(date) {
        var d = date.getDate();
        var m = date.getMonth() + 1; //Month from 0 to 11
        var y = date.getFullYear();
        return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
    }
    
    console.log(dateToYMD(new Date(2017,10,5))); // Nov 5
    

    OP格式可以生成如下:

    function dateToYMD(date) {
        var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
        var d = date.getDate();
        var m = strArray[date.getMonth()];
        var y = date.getFullYear();
        return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
    }
    console.log(dateToYMD(new Date(2017,10,5))); // Nov 5
    

    注意:然而,这通常不是一个好主意扩展JavaScript标准库(例如,通过将此函数添加到Date的原型) .

    更高级的功能可以基于格式参数生成可配置输出 .

    如果要编写格式化函数太长,那么就会有很多库 . 其他一些答案已经列举了它们 . 但是,越来越多的依赖关系也会与之相反 .

    标准ECMAScript格式化函数:

    从最新版本的ECMAScript开始, Date 类具有一些特定的格式化函数:

    toDateString:依赖于实现,仅显示日期 . http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring new Date() . toDateString(); //例如“2016年11月11日星期五”


    toISOString:显示ISO 8601日期和时间 . http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring new Date() . toISOString(); //例如“2016-11-21T08:00:00.000Z”


    toJSON:JSON的Stringifier . http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson new Date() . toJSON(); //例如“2016-11-21T08:00:00.000Z”


    toLocaleDateString:依赖于实现,以区域设置格式的日期 . http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring new Date() . toLocaleDateString(); //例如“21/11/2016”


    toLocaleString:依赖于实现,以区域设置格式的日期和时间 . http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring new Date() . toLocaleString(); //例如“2016/11/11,08:00:00 AM”


    toLocaleTimeString:依赖于实现,是语言环境格式的时间 . http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring new Date() . toLocaleTimeString(); //例如“08:00:00 AM”


    toString:Date的通用toString . http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring new Date() . toString(); //例如“星期五2016年11月21日08:00:00 GMT 0100(欧洲标准时间)

    注意:可以从那些格式>生成自定义输出

    new Date() . toISOString() . slice(0,10); //返回YYYY-MM-DD

    示例摘要:

    console.log("1) "+  new Date().toDateString());
    console.log("2) "+  new Date().toISOString());
    console.log("3) "+  new Date().toJSON());
    console.log("4) "+  new Date().toLocaleDateString());
    console.log("5) "+  new Date().toLocaleString());
    console.log("6) "+  new Date().toLocaleTimeString());
    console.log("7) "+  new Date().toString());
    console.log("8) "+  new Date().toISOString().slice(0,10));
    
  • 48
    var today = new Date();
    var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();
    
  • 13

    如果您需要使用纯JavaScript快速格式化日期,请使用 getDategetMonth + 1getFullYeargetHoursgetMinutes

    var d = new Date();
    
    var datestring = d.getDate()  + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
    d.getHours() + ":" + d.getMinutes();
    
    // 16-5-2015 9:50
    

    或者,如果您需要用零填充:

    var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
        d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);
    
    // 16-05-2015 09:50
    
  • 8

    在现代浏览器 (*) 中,您可以这样做:

    var today = new Date().toLocaleDateString('en-GB', {
        day : 'numeric',
        month : 'short',
        year : 'numeric'
    }).split(' ').join('-');
    

    如果今天执行输出(2016年1月24日):

    '24-Jan-2016'
    

    (*) According to MDN,"modern browsers"表示Chrome 24,Firefox 29,Internet Explorer 11,Edge 12,Opera 15和Safari nightly build .

  • 7

    不使用任何外部库的JavaScript解决方案:

    var now = new Date()
    months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
    var formattedDate = now.getDate()+"-"+months[now.getMonth()]+"-"+now.getFullYear()
    alert(formattedDate)
    
  • 4

    简单的JavaScript是小型onetimers的最佳选择 .

    另一方面,如果您需要更多日期,MomentJS是一个很好的解决方案 .

    For example:

    moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
    moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
    moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
    moment().startOf('day').fromNow();        // 11 hours ago
    moment().endOf('day').fromNow();          // in 13 hours
    
  • 11

    如果您在代码中使用jQuery UI,则会有一个名为 formatDate() 的内置函数 . 我用这种方式来格式化今天的日期:

    var testdate = Date();
    testdate = $.datepicker.formatDate( "d-M-yy",new Date(testdate));
    alert(testdate);
    

    你可以看到many other examples of formatting date in the jQuery UI documentation .

  • 24

    试试这个:

    function init(){
        var d = new Date();
        var day = d.getDate();
        var x = d.toDateString().substr(4, 3);
        var year = d.getFullYear();
        document.querySelector("#mydate").innerHTML = day + '-' + x + '-' + year;
    }
    window.onload = init;
    
    <div id="mydate"></div>
    
  • 160

    使用ECMAScript Edition 6(ES6 / ES2015)字符串模板:

    let d = new Date();
    let formatted = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;
    

    如果您需要更改分隔符:

    const delimiter = '/';
    let formatted = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join(delimiter);
    
  • 3

    这是我为我的npm插件实现的方式

    var monthNames = [
      "January", "February", "March",
      "April", "May", "June", "July",
      "August", "September", "October",
      "November", "December"
    ];
    
    var Days = [
      "Sunday", "Monday", "Tuesday", "Wednesday",
      "Thursday", "Friday", "Saturday"
    ];
    
    var formatDate = function(dt,format){
      format = format.replace('ss', pad(dt.getSeconds(),2));
      format = format.replace('s', dt.getSeconds());
      format = format.replace('dd', pad(dt.getDate(),2));
      format = format.replace('d', dt.getDate());
      format = format.replace('mm', pad(dt.getMinutes(),2));
      format = format.replace('m', dt.getMinutes());
      format = format.replace('MMMM', monthNames[dt.getMonth()]);
      format = format.replace('MMM', monthNames[dt.getMonth()].substring(0,3));
      format = format.replace('MM', pad(dt.getMonth()+1,2));
      format = format.replace(/M(?![ao])/, dt.getMonth()+1);
      format = format.replace('DD', Days[dt.getDay()]);
      format = format.replace(/D(?!e)/, Days[dt.getDay()].substring(0,3));
      format = format.replace('yyyy', dt.getFullYear());
      format = format.replace('YYYY', dt.getFullYear());
      format = format.replace('yy', (dt.getFullYear()+"").substring(2));
      format = format.replace('YY', (dt.getFullYear()+"").substring(2));
      format = format.replace('HH', pad(dt.getHours(),2));
      format = format.replace('H', dt.getHours());
      return format;
    }
    
    pad = function(n, width, z) {
      z = z || '0';
      n = n + '';
      return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
    }
    
  • 8

    我们有很多解决方案,但我认为其中最好的是Moment.js . 所以我个人建议使用Moment.js进行日期和时间操作 .

    console.log(moment().format('DD-MMM-YYYY'));
    
    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
    
  • 143

    这是一个完全符合您要求的脚本

    https://github.com/UziTech/js-date-format

    var d = new Date("2010-8-10");
    document.write(d.format("DD-MMM-YYYY"));
    
  • 29

    使用date.format library

    var dateFormat = require('dateformat');
    var now = new Date();
    dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
    

    收益:

    Saturday, June 9th, 2007, 5:46:21 PM
    

    dateformat on npm

    http://jsfiddle.net/phZr7/1/

  • 15
    new Date().toLocaleDateString()
    
    // "3/21/2018"
    

    有关developer.mozilla.org的更多文档

相关问题