Hoe een JavaScript-datum opmaken?

Hoe kan ik in JavaScript een datumobject opmaken om af te drukken als 10-Aug-2010?


Antwoord 1, autoriteit 100%

Voor aangepaste gescheiden datumnotaties moet u de datum (of tijd) eruit halen
componenten van een DateTimeFormat-object (dat is deel van de
ECMAScript Internationalization API), en maak vervolgens handmatig een tekenreeks
met de gewenste scheidingstekens.

Hiervoor kunt u DateTimeFormat#formatToParts. Jij kunt
destructureren van de array, maar dat is niet ideaal, omdat de uitvoer van de array afhangt van de
landinstelling:

{ // example 1
   let f = new Intl.DateTimeFormat('en');
   let a = f.formatToParts();
   console.log(a);
}
{ // example 2
   let f = new Intl.DateTimeFormat('hi');
   let a = f.formatToParts();
   console.log(a);
}

Antwoord 2, autoriteit 150%

Als u iets minder controle over de opmaak nodig heeft dan het momenteel geaccepteerde antwoord, Date#toLocaleDateString kan worden gebruikt om standaard landspecifieke weergaven te maken. Met de argumenten locale en options kunnen toepassingen de taal specificeren waarvan de opmaakconventies moeten worden gebruikt, en kan de weergave enigszins worden aangepast.

Voorbeelden van opties:

  1. dag:
    De voorstelling van de dag.
    Mogelijke waarden zijn “numeriek”, “2-cijferig”.
  2. weekdag:
    De weergave van de weekdag.
    Mogelijke waarden zijn “smal”, “kort”, “lang”.
  3. jaar:
    De voorstelling van het jaar.
    Mogelijke waarden zijn “numeriek”, “2-cijferig”.
  4. maand:
    De voorstelling van de maand.
    Mogelijke waarden zijn “numeriek”, “2-cijferig”, “smal”, “kort”, “lang”.
  5. uur:
    De voorstelling van het uur.
    Mogelijke waarden zijn “numeriek”, “2-cijferig”.
  6. minuut:
    De weergave van de minuut.
    Mogelijke waarden zijn “numeriek”, “2-cijferig”.
  7. tweede:
    De vertegenwoordiging van de tweede.
    Mogelijke waarden zijn “numeriek”, 2-cijferig”.

Al deze toetsen zijn optioneel. U kunt het aantal optiewaarden wijzigen op basis van uw vereisten, en dit weerspiegelt ook de aanwezigheid van elke datum-tijd-term.

Opmerking: als je alleen de inhoudsopties wilt configureren, maar nog steeds de huidige landinstelling wilt gebruiken, zal het doorgeven van null voor de eerste parameter een fout veroorzaken. Gebruik in plaats daarvan undefined.

Voor verschillende talen:

  1. “en-US”: voor Engels
  2. “hi-IN”: voor Hindi
  3. “ja-JP”: Voor Japans

Je kunt meer taalopties gebruiken.

Bijvoorbeeld

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

Antwoord 3, autoriteit 41%

Gebruik de date.format-bibliotheek:

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

retourneert:

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

datumformaat op npm

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


Antwoord 4, autoriteit 40%

Als u uw datum snel wilt opmaken met gewoon JavaScript, gebruikt u getDate, getMonth + 1, getFullYear, getHours en getMinutes:

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

Of, als het moet worden opgevuld met nullen:

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

Antwoord 5, autoriteit 29%

Nou, wat ik wilde was de datum van vandaag omzetten in een MySQL-vriendelijke datumreeks zoals 2012 -06-23, en om die string als parameter in een van mijn query’s te gebruiken. De eenvoudige oplossing die ik heb gevonden is deze:

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

Houd er rekening mee dat de bovenstaande oplossing geen rekening houdt met uw tijdzoneverschuiving.

Je zou kunnen overwegen om in plaats daarvan deze functie te gebruiken:

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

Dit geeft je de juiste datum als je deze code rond het begin/einde van de dag uitvoert.


Antwoord 6, autoriteit 21%

Aangepaste opmaakfunctie:

Voor vaste formaten maakt een eenvoudige functie het werk. Het volgende voorbeeld genereert het internationale formaat JJJJ-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

Antwoord 7, autoriteit 12%

Als u al gebruikmaakt van jQuery UI in uw project, kunt u het op deze manier doen:

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

Sommige datepicker-datumnotatie-opties om mee te spelen zijn hier beschikbaar.


Antwoord 8, autoriteit 9%

Ik denk dat je gewoon de niet-standaard Date-methode toLocaleFormat(formatString)

kunt gebruiken

formatString: een opmaaktekenreeks in dezelfde opmaak die wordt verwacht door de strftime() functie in C.

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

Referenties:


Antwoord 9, autoriteit 7%

Gewoon JavaScript is de beste keuze voor kleine onetimers.

Aan de andere kant, als je meer datums nodig hebt, is MomentJS een geweldige oplossing.

Bijvoorbeeld:

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

Antwoord 10, autoriteit 7%

In moderne browsers (*) kun je dit gewoon doen:

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

Uitvoer indien uitgevoerd vandaag (24 januari 2016):

'24-Jan-2016'

(*) Volgens MDN betekent “moderne browsers” Chrome 24+, Firefox 29+, Internet Explorer 11, Edge 12+, Opera 15+ & Safari nightly build.


Antwoord 11, autoriteit 4%

Aangevraagde indeling in één regel – geen bibliotheken en geen datummethoden, alleen regex:

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()')

In mijn tests werkt dit betrouwbaar in de belangrijkste browsers (Chrome, Safari, Firefox en IE.) Zoals @RobG opmerkte, is de uitvoer van Date.prototype.toString() afhankelijk van de implementatie, dus voor internationale of niet -browserimplementaties, test gewoon de uitvoer om er zeker van te zijn dat deze goed werkt in uw JavaScript-engine. Je kunt zelfs wat code toevoegen om de uitvoer van de tekenreeks te testen en ervoor te zorgen dat deze overeenkomt met wat je verwacht voordat je de regex vervangt.


Antwoord 12, autoriteit 3%

@Sebastien — alternatief alle browserondersteuning

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

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


Letterlijk voorbeeld van getagde sjabloon van hoge orde op basis van Date.toLocaleDateString:

const date = new Date(Date.UTC(2020, 4, 2, 3, 23, 16, 738));
const fmt = (dt, lc = "en-US") => (str, ...expr) =>
    str.map((str, i) => str + (expr[i]?dt.toLocaleDateString(lc, expr[i]) :'')).join('')
console.log(fmt(date)`${{year: 'numeric'}}-${{month: '2-digit'}}-${{day: '2-digit'}}`);
// expected output: "2020-05-02"

Antwoord 13, autoriteit 2%

Verpakte oplossing: Luxon

Als u één oplossing voor iedereen wilt gebruiken, raad ik u ten zeerste aan Luxon te gebruiken (een gemoderniseerde versie van Moment.js) die ook formatteert in veel landen/talen en tal van andere functies.

Luxon wordt gehost op de Moment.js-website en ontwikkeld door een Moment.js-ontwikkelaar omdat Moment.js beperkingen heeft die de ontwikkelaar wilde aanpakken maar niet kon.

Installeren:

npm install luxon of yarn add luxon (bezoek link voor andere installatiemethodes)

Voorbeeld:

luxon.DateTime.fromISO('2010-08-10').toFormat('yyyy-LLL-dd');

Opbrengst:

10-aug-2010

Handmatige oplossing

Vergelijkbare opmaak gebruiken als Moment.js, Klasse DateTimeFormatter (Java) en Klasse SimpleDateFormat (Java), ik heb een uitgebreide oplossing geïmplementeerd formatDate(date, patternStr) waarbij de code gemakkelijk te lezen en aan te passen is. U kunt datum, tijd, AM/PM, enz. weergeven. Zie code voor meer voorbeelden.

Voorbeeld:

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

(formatDate is geïmplementeerd in het onderstaande codefragment)

Opbrengst:

Vrijdag 12 oktober 2018 18:11:23:445

Probeer de code uit door op ‘Codefragment uitvoeren’ te klikken.

Datum- en tijdpatronen

yy = 2-cijferig jaar; yyyy = volledig jaar

m = cijfermaand; mm = 2-cijferige maand; MMM = korte naam van de maand; MMMM = volledige maandnaam

EEEE = volledige naam van de weekdag; EEE = korte naam van de weekdag

d = cijfer dag; dd = 2-cijferige dag

H = uur am/pm; HH = 2-cijferige uren am/pm; H = uur; HH = 2-cijferige uren

m = minuten; mm = 2-cijferige minuten; aaa = AM/PM

S = seconden; ss = 2-cijferige seconden

S = milliseconden

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 = 'M/d/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)
    ;
    // checks to see if month name will be used
    patternStr = 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('EEEE', EEEE).replace('EEE', EEE)
      .replace('yyyy', yyyy)
      .replace('yy', yy)
      .replace('aaa', aaa);
    if (patternStr.indexOf('MMM') > -1) {
        patternStr = patternStr
          .replace('MMMM', MMMM)
          .replace('MMM', MMM);
    }
    else {
        patternStr = patternStr
          .replace('MM', MM)
          .replace('M', M);
    }
    return patternStr;
}
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'));

Antwoord 14, autoriteit 2%

OK, we hebben iets met de naam Intl wat tegenwoordig erg handig is voor het opmaken van een datum in JavaScript:

Uw datum zoals hieronder:

var date = '10/8/2010';

En je verandert in Datum door nieuwe Date() te gebruiken zoals hieronder:

date = new Date(date);

En nu kun je het op elke gewenste manier opmaken met behulp van een lijst met locales zoals hieronder:

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: "??/???/????"

Als u precies het formaat wilt dat u hierboven noemde, kunt u het volgende doen:

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, '-');

En het resultaat zal zijn:

"10-Aug-2010"

Zie voor meer informatie de Intl API en Intl.DateTimeFormat documentatie.


Antwoord 15, autoriteit 2%

Een ECMAScript Edition 6 (ES6/ES2015) tekenreekssjabloon gebruiken:

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

Als u de scheidingstekens moet wijzigen:

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

Antwoord 16

Een JavaScript-oplossing zonder externe bibliotheken:

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)

Antwoord 17

Hier is wat code die ik zojuist heb geschreven om de datumnotatie af te handelen voor een project waaraan ik werk. Het bootst de PHP-datumopmaakfunctionaliteit na om aan mijn behoeften te voldoen. Voel je vrij om het te gebruiken, het is gewoon een uitbreiding van het reeds bestaande Date() object. Dit is misschien niet de meest elegante oplossing, maar het werkt voor mijn behoeften.

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
 * 
 ************************************/

Antwoord 18

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

Antwoord 19

Een handige en flexibele manier om de DateTimes in JavaScript op te maken is 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,'-'));

Resultaat is: "12-Oct-2017"

De datum- en tijdnotaties kunnen worden aangepast met behulp van het optieargument.

Het Intl.DateTimeFormat object is een constructor voor objecten die taalgevoelige datum- en tijdnotatie mogelijk maken.

Syntaxis

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

Parameters

localen

Optioneel. Een tekenreeks met een BCP 47-taaltag of een reeks van dergelijke tekenreeksen. Zie de Intl-pagina voor de algemene vorm en interpretatie van het locales-argument. De volgende Unicode-extensiesleutels zijn toegestaan:

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".

Opties

Optioneel. Een object met enkele of alle van de volgende eigenschappen:

localeMatcher

Het te gebruiken locale matching-algoritme. Mogelijke waarden zijn "lookup" en "best fit"; de standaard is "best fit". Zie de Intl-pagina voor informatie over deze optie.

timeZone

De te gebruiken tijdzone. De enige waarde die implementaties moeten herkennen is "UTC"; de standaardwaarde is de standaardtijdzone van de runtime. Implementaties kunnen ook de tijdzonenamen van de IANA-tijdzonedatabase herkennen, zoals "Asia/Shanghai", "Asia/Kolkata", "America/New_York".

uur12

Of u 12-uurs tijd wilt gebruiken (in tegenstelling tot 24-uurs tijd). Mogelijke waarden zijn true en false; de standaardinstelling is afhankelijk van de landinstelling.

formatMatcher

Het te gebruiken indelingsalgoritme. Mogelijke waarden zijn "basic" en "best fit"; de standaard is "best fit". Zie de volgende paragrafen voor informatie over het gebruik van deze eigenschap.

De volgende eigenschappen beschrijven de datum-tijdcomponenten die moeten worden gebruikt in opgemaakte uitvoer en hun gewenste weergaven. Implementaties zijn vereist om ten minste de volgende subsets te ondersteunen:

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

Implementaties kunnen andere subsets ondersteunen en verzoeken zullen worden onderhandeld tegen alle beschikbare subset-representatiecombinaties om de beste overeenkomst te vinden. Er zijn twee algoritmen beschikbaar voor deze onderhandeling en geselecteerd door de eigenschap formatMatcher: een volledig gespecificeerd "basic"-algoritme en een implementatieafhankelijk “best passend” algoritme.

weekdag

De weergave van de weekdag. Mogelijke waarden zijn "narrow", "short", "long".

tijdperk

De weergave van het tijdperk. Mogelijke waarden zijn "narrow", "short", "long".

jaar

De voorstelling van het jaar. Mogelijke waarden zijn "numeric", "2-digit".

maand

De weergave van de maand. Mogelijke waarden zijn "numeric", "2-digit", "narrow", "short", "long".

dag

De weergave van de dag. Mogelijke waarden zijn "numeric", "2-digit".

uur

De weergave van het uur. Mogelijke waarden zijn "numeric", "2-digit".

minuut

De weergave van de minuut. Mogelijke waarden zijn "numeric", "2-digit".

seconde

De weergave van de tweede. Mogelijke waarden zijn "numeric", "2-digit".

timeZoneName

De weergave van de naam van de tijdzone. Mogelijke waarden zijn "short", "long".
De standaardwaarde voor elke datum-tijdcomponenteigenschap is niet gedefinieerd, maar als alle componenteigenschappen ongedefinieerd zijn, wordt aangenomen dat het jaar, de maand en de dag "numeric" zijn.

Online controleren

Meer details


Antwoord 20

We hebben hier veel oplossingen voor, maar ik denk dat Moment.js de beste is. Dus ik stel persoonlijk voor om Moment.js te gebruiken voor datum- en tijdbewerkingen.

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

Antwoord 21

Dit kan helpen bij het probleem:

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

Antwoord 22

Als je jQuery UI in je code gebruikt, is er een ingebouwde functie genaamd formatDate(). Ik gebruik het op deze manier om de datum van vandaag op te maken:

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

Je kunt veel andere voorbeelden van het formatteren van datums zien in de jQuery UI-documentatie.


Antwoord 23

Dit is hoe ik het heb geïmplementeerd voor mijn npm-plug-ins

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;
}

Antwoord 24

Je zou eens moeten kijken naar DayJs Het is een remake van momentJs maar modulaire architectuur georiënteerd dus lichter.

Snel alternatief van 2 kB voor Moment.js met dezelfde moderne API

Day.js is een minimalistische JavaScript-bibliotheek die datums en tijden parseert, valideert, manipuleert en weergeeft voor moderne browsers met een grotendeels Moment.js-compatibele API. Als je Moment.js gebruikt, weet je al hoe je Day.js moet gebruiken.

var date = Date.now();
const formatedDate = dayjs(date).format("YYYY-MM-DD")
console.log(formatedDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.16/dayjs.min.js" crossorigin="anonymous"></script>

Antwoord 25

var today = new Date();
var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();

Antwoord 26

Geïnspireerd door JD Smith‘s geweldige reguliere expressie-oplossing, kreeg ik plotseling dit verbijsterende idee:

var D = Date().toString().split(" ");
console.log(D[2] + "-" + D[1] + "-" + D[3]);

Antwoord 27

Voor iedereen die op zoek is naar een heel eenvoudige ES6-oplossing om te kopiëren, plakken en over te nemen:

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

Antwoord 28

Vanaf 2019 lijkt het erop dat je toLocaleDateString kunt krijgen om alleen bepaalde delen te retourneren en dan kun je ze toevoegen zoals je wilt:

var date = new Date();
console.log(date.toLocaleDateString("en-US", { day: 'numeric' }) 
            + "-"+ date.toLocaleDateString("en-US", { month: 'short' })
            + "-" + date.toLocaleDateString("en-US", { year: 'numeric' }) );
> 16-Nov-2019
console.log(date.toLocaleDateString("en-US", { month: 'long' }) 
            + " " + date.toLocaleDateString("en-US", { day: 'numeric' }) 
            + ", " + date.toLocaleDateString("en-US", { year: 'numeric' }) );
> November 16, 2019

Antwoord 29

Om een ​​datum te formatteren als b.v. 10-Aug-2010, misschien wilt u .toDateString() en ES6 array-destructuring gebruiken.

const formattedDate = new Date().toDateString()
// The above yields e.g. 'Mon Jan 06 2020'
const [, month, day, year] = formattedDate.split(' ')
const ddMmmYyyy = `${day}-${month}-${year}`
// or
const ddMmmYyyy = [day, month, year].join('-')

Antwoord 30

Sugar.js heeft uitstekende extensies voor het object Date, waaronder een Date.format-methode .

Voorbeelden uit de documentatie:

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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

sixteen − seven =

Other episodes