2015-03-09 28 views
9

Proszę ktoś wytłumaczyć ten rodzaj formatu w javascriptCo ten format oznacza T00: 00: 00.000Z?

T00:00:00.000Z 

i jak je analizować.

Dzięki

+3

http://en.wikipedia.org/wiki/ISO_8601 – Drew

+1

'oznacza T' "czas" i zwykle oddziela datę od składnika czasu. 'Z' oznacza wartość pod względem [UTC] (http://en.wikipedia.org/wiki/Coordinated_Universal_Time) –

Odpowiedz

14

Jest to część ISO-8601 data reprezentacji. To niepełne, ponieważ pełna reprezentacja daty w tym wzór powinien również zawiera datę:

2015-03-04T00:00:00.000Z //Complete ISO-8601 date 

Jeśli spróbujesz analizować tę datę, ponieważ jest otrzymają Państwo Invalid Date błąd:

new Date('T00:00:00.000Z'); // Invalid Date 

Więc Chyba sposób analizowania znacznika czasu w tym formacie jest concat z każdym dniem

new Date('2015-03-04T00:00:00.000Z'); // Valid Date 

Następnie można wyodrębnić tylko część chcesz (część datownika)

var d = new Date('2015-03-04T00:00:00.000Z'); 
console.log(d.getUTCHours()); // Hours 
console.log(d.getUTCMinutes()); 
console.log(d.getUTCSeconds()); 
+1

Zamknij - powinieneś użyć' getUTCHours', 'getUTCMinutes' oraz' getUTCSeconds'. W przeciwnym razie możesz przekazać zachowanie lokalnej strefy czasowej, która przyniesie różne wyniki w zależności od strefy czasowej i wybranej daty - z powodu czasu letniego. –

+0

Zaktualizowano odpowiednio. –

2

Proponuję użyć do tego celu moment.js. W moment.js można:

var localTime = moment().format('YYYY-MM-DD'); // store localTime 
var proposedDate = localTime + "T00:00:00.000Z"; 

teraz, że masz odpowiedni format czasu, analizować je, jeśli jest to ważne:

var isValidDate = moment(proposedDate).isValid(); 
// returns true if valid and false if it is not. 

i dostać części czasu można zrobić coś takiego:

var momentDate = moment(proposedDate) 
var hour = momentDate.hours(); 
var minutes = momentDate.minutes(); 
var seconds = momentDate.seconds(); 

// or you can use `.format`: 
console.log(momentDate.format("YYYY-MM-DD hh:mm:ss A Z")); 

Więcej informacji o momentjs http://momentjs.com/

+0

Powinieneś być w stanie przeanalizować to bezpośrednio w konstruktorze momentu za pomocą odpowiedniego ciągu formatu. (moment przyjmie bieżącą datę, jeśli nie jest częścią wartości.) Możesz również rozważyć opcję 'moment.utc (...)', aby wynikowa wartość była w tej samej strefie UTC co oryginalna wartość. –