javascript - Formatează momentul ca șir
Am o valoare moment transmisă unei funcții și încerc să formatez momentul într-un șir de caractere în formatul YYYY-MM-DD HH:mm (SS-ISO 8601). Data este formatată corect, dar valoarea orei este omisă.
Cod :
timeTransformer(value: moment.Moment) {
return value == null ? null : value.format('YYYY-MM-DD HH:mm'); //Time is 00:00 even though I can see that moment has values 15:37:19
}
Răspuns #1
Conform documentației:
Ca atare, valorile lui
_dși orice alte proprietăți prefixate cu_nu ar trebui utilizate în niciun scop.
Spunând asta, putem explica ce se întâmplă. În cazul tău, putem vedea că atât _i cât și _f sunt setate. _i pare să fie folosit pentru a stoca valoarea inițială pe care ai transmis-o lui moment. _f pare să stocheze formatul pe care i-ai spus lui moment să îl folosească pentru a analiza inputul. Vezi aici:
var m = moment('2017/10/04 12:34:56', 'YYYY/MM/DD');
console.log(m._i);
console.log(m._f);
console.log(m.format('YYYY-MM-DD HH:mm'))<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>Proprietatea _i este setată în același mod, dar logarea .format('YYYY-MM-DD HH:mm') arată același 00:00 pe care îl vezi. Acest lucru se datorează faptului că i-am spus lui moment să îl parseze ca YYYY/MM/DD - tu ai folosit YYYY-MM-DD.
Pentru a face ca timpul să funcționeze, trebuie să mergi și să modifici codul care creează obiectul tău moment.
