Come analizzare ISO 8601 in formato di data e ora utilizzando Momento js Javascript?

Attualmente sto usando Momento js per analizzare un ISO 8601 una stringa in una data e ora, ma non funziona correttamente. Che cosa sto facendo di sbagliato? E vorrei prendere altre soluzioni più semplici.

ISO 8601 vorrei analizzare: "2011-04-11T10:20:30Z" in data in stringa: "2011-04-11" e tempo nella stringa: "10:20:30"

E provato console.log(moment("2011-04-11T10:20:30Z" ,moment.ISO_8601)) e console.log(moment("2011-04-11T10:20:30Z" , ["YYYY",moment.ISO_8601]) come un test, ma restituisce un oggetto con tutti i diversi tipi di proprietà.

Con la manipolazione di stringhe: str.slice(0, -1).split('T');

OriginaleL’autore Walter | 2016-09-27

1 risposta

  1. 11

    Ci sono due parti per il momento: operazione di lettura della data/ora, e sputare di nuovo fuori. Hai la prima parte:

    moment("2011-04-11T10:20:30Z")

    ma allora avete bisogno di chiamare una funzione di output, ad esempio:

    moment("2011-04-11T10:20:30Z").format('YYYY-MM-DD h:mm:ss a')
    Grazie per la risposta. Attualmente è la console di registrazione: 2011-04-11 3:20:30 am. Quindi la data è corretta, ma l’ora è sbagliata. Non dovrebbe essere hh:mm:ss? Provato, ma esce ancora essere 03 anziché 10.
    È possibile trovare un’analisi completa di tutti gli elementi di formattazione modelli qui: momentjs.com/docs/#/displaying. Tuttavia, non penso che il tempo è un problema di formattazione; sono abbastanza sicuro che è un problema di fuso orario. Il tuo iniziale data stringa manca un po ‘ di fuso orario, in modo da Momento decide di interpretare come alcuni di fuso orario (immagino 0 GMT), poi mostra il tempo relativo al fuso orario corrente (credo si vive +/- 7 GMT?). Ti consigliamo di leggere il Momento docs (o forse porre una questione a parte) su fusi orari per risolvere questo.
    Come nota a margine, fusi orari sono una delle cose più fastidiose di Momento, e ho spesso il desiderio che avevo di carta su di loro … ma in ultima analisi, come un web developer sono contento che non. Alcuni utenti sarà quasi certamente utilizzare il vostro sito in un fuso orario diverso da voi, quindi è importante riflettere su come memorizzare le date sul vostro server, e quindi come il tuo JS/Momento di codice si localizza quando li mostra all’utente.
    Attualmente sto PST. Prima di accettare la risposta e upvote, si può mostrare un esempio con il formato esatto sto cercando di ottenere con il fuso orario di modifica? Data stringa: "2011-04-11" e il tempo stringa: "10:20:30" ho guardato i documenti, ma non ha aiutato molto.
    Sono disponibili quattro opzioni per il ore una parte del datetime stringa. Supponiamo che il tempo è 1pm: h = “1” … hh = “01” … H = “13” … HH = “13”. Questi due ultimi sono gli stessi per 1pm, ma se passiamo all ‘ 1 di notte diventano: H = “1” … HH = “01”. In altre parole, la capitalizzazione controlla se il tempo è di 12 o basato su 24-based, e due lettere significa che il Momento pad il tempo con “0”. Non capisco dalla tua domanda se vuoi imbottitura o no, o se si vuole 12 – o 24 ore di tempo, perché avete preso 10 come esempio (ed è la stessa in tutti e quattro i formati).

    OriginaleL’autore machineghost

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *