Se String în format AAAALLZZ de la JS data de obiect?

Am'm încercarea de a utiliza JS pentru a transforma o data obiect într-un șir de caractere în "AAAALLZZ" format. Există o cale mai ușoară decât concatenarea Data.getYear(), Data.getMonth ()", și " Data.getDay()?

Comentarii la întrebare (2)
Soluția

Modificat bucată de cod eu folosesc de multe ori:

Date.prototype.yyyymmdd = function() {
  var mm = this.getMonth() + 1; // getMonth() is zero-based
  var dd = this.getDate();

  return [this.getFullYear(),
          (mm>9 ? '' : '0') + mm,
          (dd>9 ? '' : '0') + dd
         ].join('');
};

var date = new Date();
date.yyyymmdd();
Comentarii (9)

Am't, cum ar fi adăugarea la prototip. O alternativă ar fi:

var rightNow = new Date();
var res = rightNow.toISOString().slice(0,10).replace(/-/g,"");


document.body.innerHTML += res;
Comentarii (11)

Puteți utiliza `toISOString funcția :

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

Acesta vă va oferi un "aaaa-ll-zz" format.

Comentarii (4)

Moment.js ar putea fi prietenul tău

var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
Comentarii (4)

Dacă tu nu't nevoie de o pură JS soluție, puteți folosi jQuery UI pentru a face treaba de genul asta :

$.datepicker.formatDate('yymmdd', new Date());

Eu de obicei nu't ca a importa prea mult biblioteci. Dar jQuery UI este atât de utilă, vă va folosi, probabil, în altă parte în proiectul dumneavoastră.

Vizita http://api.jqueryui.com/datepicker/ pentru mai multe exemple

Comentarii (0)

Acest lucru este de o singură linie de cod pe care le puteți folosi pentru a crea un YYYY-MM-DD șir de azi's date.

var d = new Date().toISOString().slice(0,10);
Comentarii (2)

În plus față de o-o's răspuns eu'd dori sa recomandati separarea logică a operațiunilor de returnare și le-a pus ca ternare în variabile în loc.

De asemenea, folosesc concat (), pentru a asigura în condiții de siguranță concatenare de variabile

 Date.prototype.yyyymmdd = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   return "".concat(yyyy).concat(mm).concat(dd);
  };

 Date.prototype.yyyymmddhhmm = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
   var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
   return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min);
  };

 Date.prototype.yyyymmddhhmmss = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
   var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
   var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
   return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min).concat(ss);
  };

var d = new Date();
d.yyyymmdd();
d.yyyymmddhhmm();
d.yyyymmddhhmmss();

Un pic mai USCAT vioara cum a sugerat de către RiZKiT

https://jsfiddle.net/EricHerlitz/tuhhfxz9/

Comentarii (3)
new Date('Jun 5 2016').
  toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).
  replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');

// => '2016-06-05'
Comentarii (2)

Eu nu't, cum ar fi modificarea obiectele native, și cred că de multiplicare este mai clară decât șirul de umplutură soluția acceptată.

function yyyymmdd(dateIn) {
   var yyyy = dateIn.getFullYear();
   var mm = dateIn.getMonth()+1; // getMonth() is zero-based
   var dd  = dateIn.getDate();
   return String(10000*yyyy + 100*mm + dd); // Leading zeros for mm and dd
}

var today = new Date();
console.log(yyyymmdd(today));

Vioara: http://jsfiddle.net/gbdarren/Ew7Y4/

Comentarii (7)

Simplu JS (ES5) soluție fără nici o posibilă întâlnire sari probleme cauzate de Data.toISOString() imprimare în UTC:

var now = new Date();
var todayUTC = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));
return todayUTC.toISOString().slice(0, 10).replace(/-/g, '');

Asta ca răspuns la @weberste's comentariu pe @Pierre Guilbert's a răspunde.

Comentarii (7)
// UTC/GMT 0
document.write('UTC/GMT 0: ' + (new Date()).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812013509

// Client local time
document.write('<br/>Local time: ' + (new Date(Date.now()-(new Date()).getTimezoneOffset() * 60000)).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812113509
Comentarii (3)
var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);

console.log(dateFormated);

Comentarii (5)

Un alt mod este de a utiliza toLocaleDateString cu o localizare care are o big-endian data format standard, cum ar fi Suedia, Lituania, Ungaria, Coreea de Sud, ...:

date.toLocaleDateString('se')

Pentru a elimina delimitatori (-) este doar o chestiune de înlocuire non-cifre:

console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );

Acest lucru are potențialul de eroare, puteți obține cu UTC formate de dată: UTC dată poate fi o zi liberă în raport cu data în fusul orar local.

Comentarii (0)

Puteți utiliza pur și simplu, Aceasta linie de cod pentru a obține data in an

var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();
Comentarii (0)

Acest cod este fix pentru Pierre Guilbert's răspuns:

(funcționează chiar și după 10000 de ani)

YYYYMMDD=new Date().toISOString().slice(0,new Date().toISOString().indexOf("T")).replace(/-/g,"")
Comentarii (0)

Puțin versiune simplificată pentru cel mai popular raspuns in acest thread https://stackoverflow.com/a/3067896/5437379 :

function toYYYYMMDD(d) {
    var yyyy = d.getFullYear().toString();
    var mm = (d.getMonth() + 101).toString().slice(-2);
    var dd = (d.getDate() + 100).toString().slice(-2);
    return yyyy + mm + dd;
}
Comentarii (0)

Acest tip de aici => http://blog.stevenlevithan.com/archives/date-time-format a scris un format()` funcția de Javascript's "Data" de obiect, astfel încât acesta poate fi utilizat cu familiar literal formate.

Dacă aveți nevoie de caracteristici complete formatarea datelor în aplicația's, Javascript, - l folosească. În caz contrar, dacă ceea ce vrei sa faci este un one-off, atunci concatenarea getYear(), getMonth(), getDay() este probabil cel mai simplu.

Comentarii (0)

Se pare că mootools oferă Data().format(): https://mootools.net/more/docs/1.6.0/Types/Date

Am'm nu sunt sigur dacă merită inclusiv doar pentru această sarcină, deși.

Comentarii (0)

De lucru de la @o-o's a răspunde la această va da înapoi șirul de la data în conformitate cu un șir format. Puteți adăuga cu ușurință un 2 cifre din an regex pentru anul & milisecunde și astfel dacă aveți nevoie de ele.

Date.prototype.getFromFormat = function(format) {
    var yyyy = this.getFullYear().toString();
    format = format.replace(/yyyy/g, yyyy)
    var mm = (this.getMonth()+1).toString(); 
    format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
    var dd  = this.getDate().toString();
    format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
    var hh = this.getHours().toString();
    format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
    var ii = this.getMinutes().toString();
    format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
    var ss  = this.getSeconds().toString();
    format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
    return format;
};

d = new Date();
var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
alert(date);

Eu nu't știu cât de eficient, care este, totuși, mai ales perf înțelept pentru că folosește o mulțime de regex. S-ar putea folosi, probabil, un lucru nu-master pur js.

Comentarii (0)

Eu de obicei folosesc codul de mai jos atunci când am nevoie pentru a face acest lucru.

var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
    + ('0' + (date.getMonth() + 1)).slice(-2)
    + '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when this comment was written

Pentru a explica, .felie(-2) ne dă ultimele două caractere din șir.

Deci, indiferent de ce, putem adăuga "0" pentru o zi sau o lună, și doar cere pentru ultimele două, deoarece acestea sunt întotdeauna cele două vrem.

Deci, dacă MyDate.getMonth() întoarce 9, va fi:

("0" + "9") // Giving us "09"

deci adăugarea .felie(-2) pe care ne dă ultimele două caractere care este:

("0" + "9").slice(-2)

"09"

Dar dacă data.getMonth() returnează 10, acesta va fi:

("0" + "10") // Giving us "010"

deci adăugarea .felie(-2) ne dă ultimele două caractere, sau:

("0" + "10").slice(-2)

"10"
Comentarii (0)