Folosind Moment.js pot't transforma o corectă momentul obiect la un obiect date cu orare. Pot't corecta data.
Exemplu:
var oldDate = new Date(),
momentObj = moment(oldDate).tz("MST7MDT"),
newDate = momentObj.toDate();
console.log("start date " + oldDate)
console.log("Format from moment with offset " + momentObj.format())
console.log("Format from moment without offset " + momentObj.utc().format())
console.log("(Date object) Time with offset " + newDate)
console.log("(Date object) Time without offset "+ moment.utc(newDate).toDate())
Folosiți acest pentru a transforma un moment obiect într-un obiect date:
Din http://momentjs.com/docs/#/displaying/as-javascript-date/
moment().toDate();
Randamente:
Tue Nov 04 2014 14:04:01 GMT-0600 (CST)
Atâta timp cât ați inițializat moment-de fus orar cu datele pentru zonele vrei, codul funcționează cum era de așteptat.
Sunt corect conversia moment la fusul orar, care se reflectă în cea de-a doua linie de ieșire de la momentObj.format()
.
Trecerea la UTC, nu't doar picătură offset, se schimbă înapoi în timp UTC. Daca're de gând să fac asta, nu't nevoie de original .tz()
apel la toate. Ai putea să faci pentru moment.utc()`.
Poate că sunt doar încercarea de a schimba formatul de ieșire string? Daca da, specifica doar parametrii doriți să "format" metoda:
momentObj.format("YYYY-MM-DD HH:mm:ss")
În ceea ce privește ultima pentru linii de cod - când te întorci la o "Intalnire" obiect folosind curent()`, renunțați la comportamentul moment.js și merge înapoi la JavaScript's de comportament. Un JavaScript "Data" obiect va fi întotdeauna tipărite în fusul orar local de calculator a's rulează pe. Nu's nimic moment.js puteți face despre asta.
Un cuplu de alte lucruri mici:
În timp ce în momentul constructor poate ia o "Data", este de obicei cel mai bine să nu folosească unul. Pentru "acum", nu't folosi momentul(new Date())
. În schimb, utilizați doar momentul()
. Atât va funcționa, dar's inutil, redundant. Dacă sunteți parsarea dintr-un șir, care trece șir direct în moment. Don't încercați pentru a analiza, la o "Intalnire" mai întâi. Veți găsi momentul's parser pentru a fi mult mai fiabile.
Zone de timp ca MST7MDT
sunt acolo pentru compatibilitate motive. Acestea provin din POSIX stil de zone de timp, și doar câteva dintre ele sunt în TZDB de date. Decât dacă este absolut necesar, ar trebui să utilizați o cheie, cum ar fi America/Denver`.
.toDate
nu prea merge la mine, Deci, Aici este ceea ce am făcut :
futureStartAtDate = new Date(moment().locale("en").add(1, 'd').format("MMM DD, YYYY HH:MM"))
sper că acest lucru vă ajută
Deoarece momentjs are nici un control asupra javascript data obiect am găsit o lucrare în jurul pentru acest lucru.
const currentTime = new Date(); const convertTime = momentul(currentTime).tz(fus orar).format("YYYY-MM-DD HH:mm:ss"); const convertTimeObject = new Date(convertTime);
Acest lucru vă va oferi un javascript data obiect cu convertite timp
Am nevoie pentru a avea informațiile de fus orar în data de coarde. Inițial, am fost folosind moment.tz(dateStr, 'America/New_York').toString();
dar apoi am început să primesc erori despre hrănirea că șirul înapoi în moment.
Am încercat moment.tz(dateStr, 'America/New_York').curent();
dar apoi mi-am pierdut fusul orar informațiile de care am nevoie.
Singura soluție care a returnat un utilizabile data string cu orar care ar putea fi reintroduse în moment a fost pentru moment.tz(dateStr, 'America/New_York').format();`
momentul a actualizat js lib ca de 06/2018.
var newYork = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london = newYork.clone().tz("Europe/London");
newYork.format(); // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format(); // 2014-06-01T17:00:00+01:00
dacă aveți libertatea de a folosi Angular5+, apoi o mai bună utilizare datePipe caracteristică nu există decât în funcție de fus orar aici. Trebuie să utilizați moment.js pentru că proiectul meu limite Angular2 numai.
încerca (fără "format" pas)
new Date(moment())
var d = moment.tz("2019-04-15 12:00", "America/New_York");
console.log( new Date(d) );
console.log( new Date(moment()) );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>
Întrebarea este un pic obscure. Voi face meu cel mai bun pentru a explica acest lucru. În primul rând trebuie să înțelegeți cum să utilizați moment de fus orar. În funcție de acest răspuns aici https://stackoverflow.com/questions/47046067/typeerror-moment-tz-is-not-a-function, trebuie să importați moment din moment de fus orar în loc de default moment (desigur, va trebui să npm instala moment-de fus orar în primul rând!). Din motive de claritate,
const moment=require('moment-timezone')//import from moment-timezone
Acum, în scopul de a utiliza zona de fus orar caracteristică, utilizați moment.tz("date_string/moment()","time_zone") (vizita https://momentjs.com/timezone/ pentru mai multe detalii). Această funcție va returna un moment obiect cu un anumit fus orar. Din motive de claritate,
var newYork= moment.tz("2014-06-01 12:00", "America/New_York");/*this code will consider NewYork as the timezone.*/
Acum, atunci când încercați pentru a converti newYork (momentul obiect) cu momentul's curent() (ISO 8601 format de conversie), veți obține timp de Greenwich,marea BRITANIE. Pentru mai multe detalii, du-te prin acest articol https://www.nhc.noaa.gov/aboututc.shtml, despre UTC. Cu toate acestea, dacă doriți doar ora locală, în acest format (ora New York-ului, în conformitate cu acest exemplu), trebuie doar să adăugați metoda .utc(true) ,cu arg adevărat, la momentul obiect. Din motive de claritate,
newYork.toDate()//will give you the Greenwich ,UK, time.
newYork.utc(true).toDate()//will give you the local time. according to the moment.tz method arg we specified above, it is 12:00.you can ofcourse change this by using moment()
Pe scurt, moment.tz consideră fusul orar specifica și compară timpul local cu timpul la Greenwich pentru a oferi un rezultat. Sper că a fost util.