Formato JavaScript Data a aaaa-mm-gg

Ciao a tutti ho un formato Data dom maggio 11, 2014 come posso convertirlo in 2014-05-11 in javascript.

function taskDate(dateMilli) { var d = (new Date(dateMilli) + '').split(' '); d[2] = d[2] + ','; return [d[0], d[1], d[2], d[3]].join(' '); } var datemilli = Date.parse('Sun May 11,2014'); taskdate(datemilli); 

il codice di cui sopra mi dà lo stesso formato di data del sole può 11,2014 per favore aiuto

tu puoi fare

 function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [year, month, day].join('-'); } 

esempio di utilizzo:

 alert(formatDate('Sun May 11,2014')); 

Produzione:

 2014-05-11 

Demo on fiddle: http://jsfiddle.net/abdulrauf6182012/2Frm3/

Basta sfruttare il metodo toISOString che porta la data nel formato ISO 8601.

 yourDate.toISOString().split('T')[0] 

dove yourDate è il tuo object data.

Io uso in questo modo per ottenere la data in formato aaaa-mm-gg 🙂

 var todayDate = new Date().toISOString().slice(0,10); 
 format = function date2str(x, y) { var z = { M: x.getMonth() + 1, d: x.getDate(), h: x.getHours(), m: x.getMinutes(), s: x.getSeconds() }; y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) { return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2) }); return y.replace(/(y+)/g, function(v) { return x.getFullYear().toString().slice(-v.length) }); } 

risultato:

 format(new Date('Sun May 11,2014'), 'yyyy-MM-dd') "2014-05-11 

Il modo più semplice per convertire la tua data nel formato aaaa-mm-gg, è quello di fare questo:

 var dateString = (new Date("Sun May 11,2014")).toISOString().split("T")[0]; 

Come funziona :

  • new Date("Sun May 11,2014") converte la stringa "Sun May 11,2014" in un object data
  • .toISOString() converte l’object data in stringa ISO 8601 2014-05-10T22:00:00.000Z
  • .split("T") divide la stringa in array ["2014-05-10", "22:00:00.000Z"]
  • [0] prende il primo elemento di quell’array

dimostrazione

 var dateString = (new Date("Sun May 11,2014")).toISOString().split("T")[0]; console.log(dateString); 

Una combinazione di alcune delle risposte:

 var d = new Date(date); date = [ d.getFullYear(), ('0' + (d.getMonth() + 1)).slice(-2), ('0' + d.getDate()).slice(-2) ].join('-'); 

Perché non usare semplicemente questo

 var date = new Date('1970-01-01'); //or your date here console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear()); 

Semplice e dolce;)

toISOString() presuppone che la tua data sia ora locale e la converta in UTC. Otterrai una stringa di data errata.

Il seguente metodo dovrebbe restituire quello che ti serve.

 Date.prototype.yyyymmdd = function() { var yyyy = this.getFullYear().toString(); var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based var dd = this.getDate().toString(); return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]); }; 

Fonte: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/

Suggerisco di utilizzare qualcosa di simile a questo https://github.com/brightbits/formatDate-js invece di provare a replicarlo ogni volta, basta usare una libreria che supporti tutte le principali azioni strftime.

 new Date().format("%Y-%m-%d") 

Nessuna di queste risposte mi ha soddisfatto abbastanza. Volevo una soluzione multipiattaforma che mi fornisse il giorno nel fuso orario locale senza utilizzare alcuna libreria esterna.

Questo è quello che mi è venuto in mente:

 function localDay(time) { var minutesOffset = time.getTimezoneOffset() var millisecondsOffset = minutesOffset*60*1000 var local = new Date(time - millisecondsOffset) return local.toISOString().substr(0, 10) } 

Questo dovrebbe restituire il giorno della data, nel formato AAAA-MM-GG, nel fuso orario i riferimenti di data.

Quindi, ad esempio, localDay(new Date("2017-08-24T03:29:22.099Z")) restituirà "2017-08-23" anche se è già il 24 a UTC.

Dovrai eseguire il polyfill Date.prototype.toISOString affinché funzioni in IE8, ma dovrebbe essere supportato ovunque.

puoi provare questo: https://www.npmjs.com/package/timesolver

npm i timesolver

usalo nel tuo codice:

 const timeSolver = require('timeSolver'); const date = new Date(); const dateString = timeSolver.getString(date, "YYYY-MM-DD"); 

È ansible ottenere la stringa della data utilizzando questo metodo:

getString

Spero che questo ti possa aiutare!

 function myYmd(D){ var pad = function(num) { var s = '0' + num; return s.substr(s.length - 2); } var Result = D.getFullYear() + '-' + pad((D.getMonth() + 1)) + '-' + pad(D.getDate()); return Result; } var datemilli = new Date('Sun May 11,2014'); document.write(myYmd(datemilli)); 
 function formatDate(date) { var year = date.getFullYear().toString(); var month = (date.getMonth() + 101).toString().substring(1); var day = (date.getDate() + 100).toString().substring(1); return year + "-" + month + "-" + day; } alert(formatDate(new Date())); 

Ad esempio, se la data deve essere uguale in tutti i fusi orari, rappresenta un valore dal database, quindi assicurati di utilizzare le versioni utc del giorno, del mese, delle funzioni di completamento sull’object js date poiché verrà visualizzato in utc time ed eviterà l’eliminazione di 1 errore in determinati fusi orari. Ancora meglio usare la libreria di date moment.js per questo tipo di formattazione

La riformattazione di una stringa di data è abbastanza semplice, ad es

 var s = 'Sun May 11,2014'; function reformatDate(s) { function z(n){return ('0' + n).slice(-2)} var months = [,'jan','feb','mar','apr','may','jun', 'jul','aug','sep','oct','nov','dec']; var b = s.split(/\W+/); return b[3] + '-' + z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' + z(b[2]); } console.log(reformatDate(s)); 

Ancora un’altra combinazione delle risposte. Ben leggibile, ma un po ‘lungo.

 function getCurrentDayTimestamp() { const d = new Date(); return new Date( Date.UTC( d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds() ) // `toIsoString` returns something like "2017-08-22T08:32:32.847Z" // and we want the first part ("2017-08-22") ).toISOString().slice(0, 10); } 

Ho modificato la risposta di Samit Satpute come segue:

 var newstartDate = new Date(); // newstartDate.setDate(newstartDate.getDate() - 1); var startDate = newstartDate.toISOString().replace(/[-T:\.Z]/g, ""); //.slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format console.log(startDate); 

Date.js è ottimo per questo.

 require("datejs") (new Date()).toString("yyyy-MM-dd") 

Tutte le risposte date sono grandi e mi hanno aiutato in grande. Nella mia situazione, volevo ottenere la data corrente nel formato aaaa mm dd insieme alla data-1. Ecco cosa ha funzionato per me.

 var endDate = new Date().toISOString().slice(0, 10); // To get the Current Date in YYYY MM DD Format var newstartDate = new Date(); newstartDate.setDate(newstartDate.getDate() - 1); var startDate = newstartDate.toISOString().slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format alert(startDate); 

Facilmente realizzato dal mio pacchetto data-shortcode :

 const dateShortcode = require('date-shortcode') dateShortcode.parse('{YYYY-MM-DD}', 'Sun May 11,2014') //=> '2014-05-11' 

Alcuni di questi sopra erano ok, ma non erano molto flessibili. Volevo qualcosa che potesse davvero gestire più casi limite, quindi ho preso la risposta di @orangleliu e l’ho ampliata. https://jsfiddle.net/8904cmLd/1/

 function DateToString(inDate, formatString) { // Written by m1m1k 2018-04-05 // Validate that we're working with a date if(!isValidDate(inDate)) { inDate = new Date(inDate); } // see the jsFiddle for extra code to be able to use DateToString('Sun May 11,2014','USA'); //formatString = CountryCodeToDateFormat(formatString); var dateObject = { M: inDate.getMonth() + 1, d: inDate.getDate(), D: inDate.getDate(), h: inDate.getHours(), m: inDate.getMinutes(), s: inDate.getSeconds(), y: inDate.getFullYear(), Y: inDate.getFullYear() }; // Build Regex Dynamically based on the list above. // Should end up with something like this "/([Yy]+|M+|[Dd]+|h+|m+|s+)/g" var dateMatchRegex = joinObj(dateObject, "+|") + "+"; var regEx = new RegExp(dateMatchRegex,"g"); formatString = formatString.replace(regEx, function(formatToken) { var datePartValue = dateObject[formatToken.slice(-1)]; var tokenLength = formatToken.length; // A conflict exists between specifying 'd' for no zero pad -> expand to '10' and specifying yy for just two year digits '01' instead of '2001'. One expands, the other contracts. // so Constrict Years but Expand All Else if(formatToken.indexOf('y') < 0 && formatToken.indexOf('Y') < 0) { // Expand single digit format token 'd' to multi digit value '10' when needed var tokenLength = Math.max(formatToken.length, datePartValue.toString().length); } var zeroPad = (datePartValue.toString().length < formatToken.length ? "0".repeat(tokenLength) : ""); return (zeroPad + datePartValue).slice(-tokenLength); }); return formatString; } 

Esempio di utilizzo:

 DateToString('Sun May 11,2014', 'MM/DD/yy'); DateToString('Sun May 11,2014', 'yyyy.MM.dd'); DateToString(new Date('Sun Dec 11,2014'),'yy-M-d'); 

Ecco un modo per farlo:

 var date = Date.parse('Sun May 11,2014'); function format(date) { date = new Date(date); var day = ('0' + date.getDate()).slice(-2); var month = ('0' + (date.getMonth() + 1)).slice(-2); var year = date.getFullYear(); return year + '-' + month + '-' + day; } console.log(format(date)); 

String.padStart rende semplice:

 var dateObj = new Date(); var dateStr = dateObj.getFullYear() + "-" + String(dateObj.getMonth() + 1).padStart(2, "0") + "-" + String(dateObj.getDate()).padStart(2, "0"); 

Questo ha funzionato per me e puoi incollarlo direttamente nel tuo codice HTML se necessario per il test:

  

Basta usare questo in modo definitivo per YYYY MM DD come (2017-03-12)

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