Przechowuję czas w bazie danych MySQL jako uniksowy znacznik czasu, który jest wysyłany do kodu JavaScript. Jak mam z tego skorzystać?
Na przykład w formacie GG / MM / SS.
javascript
date
time
date-format
time-format
roflwaffle
źródło
źródło
Odpowiedzi:
Więcej informacji na temat obiektu Date można znaleźć w specyfikacji MDN lub specyfikacji ECMAScript 5 .
źródło
źródło
var min = a.getMinutes() < 10 ? '0' + a.getMinutes() : a.getMinutes(); var sec = a.getSeconds() < 10 ? '0' + a.getSeconds() : a.getSeconds();
getMonth()
zwraca liczbę miesiąca od 0 do 11, więca.getMonth() - 1
jest niepoprawna.JavaScript działa w milisekundach, więc najpierw musisz przekonwertować znacznik czasu UNIX z sekund na milisekundy.
źródło
Jestem częściowo zwolennikiem
Date.format()
biblioteki Jacoba Wrighta , która implementuje formatowanie daty JavaScript w stylu funkcji PHPdate()
.źródło
format is not a function
. Ale to najwyraźniej działa: stackoverflow.com/a/34015511/7550772Posługiwać się:
i na czas:
zobacz Date.prototype.toLocaleDateString ()
źródło
toLocaleString
zawiera datę i godzinę.Oto najkrótsze jedno-liniowe rozwiązanie do formatowania sekund jako
hh:mm:ss
:Uwaga: to rozwiązanie nie wymaga bibliotek stron trzecich i jest obsługiwane we wszystkich nowoczesnych przeglądarkach i silnikach JavaScript.
źródło
toTimeString
nie działał dobrze ze strefami czasowymi. Niestety twoja edycja została odrzucona, zanim ją zobaczyłem. Sugeruję jednak użycietoISOString
zamiast tego, ponieważtoGMTString
jest przestarzałe i może zwracać różne wyniki na różnych platformach.Pomyślałbym o użyciu biblioteki takiej jak momentjs.com , która sprawia, że to naprawdę proste:
Na podstawie uniksowego znacznika czasu:
Na podstawie ciągu daty MySQL:
źródło
console.log
przykładach byłem zdezorientowany co do formatu z powodu/
, ale bardzo mi to pomogło.Sygnatura czasowa UNIX to liczba sekund od 00:00:00 UTC 1 stycznia 1970 r. (Zgodnie z Wikipedią ).
Argumentem obiektu Date w Javascript jest liczba milisekund od 00:00:00 UTC 1 stycznia 1970 r. (Zgodnie z dokumentacją W3Schools Javascript ).
Zobacz na przykład poniższy kod:
daje:
źródło
najkrótsze jedno-liniowe rozwiązanie do formatowania sekund jako hh: mm: ss: wariant:
źródło
Korzystając z Moment.js , możesz uzyskać godzinę i datę w następujący sposób:
Dzięki temu możesz uzyskać tylko czas:
źródło
Problem z wyżej wymienionymi rozwiązaniami polega na tym, że jeśli godzina, minuta lub sekunda ma tylko jedną cyfrę (tj. 0–9), to czas byłby niewłaściwy, np. Mógłby to być 2: 3: 9, ale raczej powinien to być 02: 03:09.
Według tej strony lepszym rozwiązaniem wydaje się zastosowanie metody „toLocaleTimeString” Date.
źródło
date.toLocaleTimeString()
toTimeString
metodą. Sprawdź tutaj: stackoverflow.com/a/35890537/1249581 .Innym sposobem - od daty ISO 8601 .
źródło
Za chwilę musisz użyć uniksowego znacznika czasu:
źródło
W oparciu o odpowiedź @ shomrat, oto fragment, który automatycznie zapisuje datę i godzinę w ten sposób (nieco podobny do daty StackOverflow dla odpowiedzi:)
answered Nov 6 '16 at 11:51
:lub
lub (jeśli inny, ale ten sam rok niż dzisiaj)
lub (jeśli inny rok niż dzisiaj)
źródło
Nowoczesne rozwiązanie, które nie potrzebuje biblioteki 40 KB:
Intl.DateTimeFormat to niekulturowo imperialistyczny sposób formatowania daty / godziny.
źródło
Mój znacznik czasu jest pobierany z zaplecza PHP. Wypróbowałem wszystkie powyższe metody i to nie zadziałało. Potem natrafiłem na samouczek, który zadziałał:
powyższe metody wygenerują te wyniki
Istnieje wiele metod, które doskonale działają z datownikami. Nie mogę wymienić ich wszystkich
źródło
źródło
W przypadku niektórych odpowiedzi zwróć uwagę na problem zerowy. Na przykład znacznik czasu
1439329773
zostałby błędnie przekonwertowany na12/08/2015 0:49
.Sugerowałbym skorzystanie z następujących rozwiązań w celu rozwiązania tego problemu:
Teraz wyniki w:
źródło
źródło
źródło
Zobacz Konwerter daty / epoki .
Musisz
ParseInt
, inaczej nie zadziałałoby:źródło
Aby przekonwertować znacznik czasu na
HH:MM:SS
format, możesz użyć następującej funkcji :Bez przekazywania separatora służy
:
jako (domyślny) separator:Jeśli chcesz użyć
/
jako separatora, po prostu przekaż go jako drugi parametr:Próbny
Zobacz także to skrzypce .
źródło
źródło
Jeśli chcesz przeliczyć czas uniksowy na rzeczywiste godziny, minuty i sekundy, możesz użyć następującego kodu:
źródło
źródło
Poniższy kod zawiera również 3-cyfrowe milisekundy, idealne do prefiksów dziennika konsoli:
źródło
moment.js
https://momentjs.com/
źródło
day.js
github.com/iamkun/dayjsOdpowiedź udzielona przez @Aron działa, ale nie zadziałała, ponieważ próbowałem przekonwertować znacznik czasu od 1980 r. Wprowadziłem więc kilka zmian w następujący sposób
Więc jeśli masz znacznik czasu rozpoczynający się od innej dekady, skorzystaj z niego. Oszczędzało mi to dużo bólu głowy.
źródło