Czy ktoś wie, jak mogę wziąć datetime
wartość typu danych MySQL , taką jak YYYY-MM-DD HH:MM:SS
i albo ją przeanalizować, albo przekonwertować do pracy w Date()
funkcji JavaScript , na przykład: - Data ('RRRR, MM, DD, HH, MM, SS);
Dziękuję Ci!
Czy ktoś wie, jak mogę wziąć datetime
wartość typu danych MySQL , taką jak YYYY-MM-DD HH:MM:SS
i albo ją przeanalizować, albo przekonwertować do pracy w Date()
funkcji JavaScript , na przykład: - Data ('RRRR, MM, DD, HH, MM, SS);
Dziękuję Ci!
Odpowiedzi:
Niektóre z udzielonych tutaj odpowiedzi są albo zbyt skomplikowane, albo po prostu nie będą działać (przynajmniej nie we wszystkich przeglądarkach). Jeśli cofniesz się o krok, zobaczysz, że sygnatura czasowa MySQL ma każdy składnik czasu w tej samej kolejności, co argumenty wymagane przez
Date()
konstruktor.Wszystko, czego potrzeba, to bardzo prosty podział na ciąg:
Uczciwe ostrzeżenie: zakłada się, że serwer MySQL wyświetla daty UTC (co jest domyślne i zalecane, jeśli w ciągu nie ma składnika strefy czasowej).
źródło
var d = new Date("2010-06-09 13:12:01");
. Co ciekawe, Chrome nie ma z tym problemu.new Date(Date.UTC(...))
jest lepsze, ale zakłada się, że mysql używa utc ... tak czy inaczej musi to być rozważone, zanim będzie można to uznać za poprawną odpowiedź.Aby dodać do doskonałej odpowiedzi Andy E, często używaną funkcją może być:
W ten sposób podając datę / czas MySQL w formularzu
"YYYY-MM-DD HH:MM:SS"
lub nawet w formie skróconej (tylko data)"YYYY-MM-DD"
możesz zrobić:źródło
new Date(Date.UTC(...))
innego mądrego odpowiedź jest błędna do 24 godzin ...Myślę, że mogłem znaleźć prostszy sposób, o którym nikt nie wspomniał.
Kolumnę MySQL DATETIME można przekonwertować na uniksowy znacznik czasu poprzez:
Możemy stworzyć nowy obiekt Date w JavaScript używając konstruktora, który wymaga milisekund od epoki. Funkcja unix_timestamp zwraca sekundy od epoki, więc musimy pomnożyć przez 1000:
Wynikowa wartość może zostać użyta bezpośrednio do utworzenia instancji poprawnego obiektu Date Javascript:
Mam nadzieję że to pomoże.
źródło
Jedna linijka dla nowoczesnych przeglądarek (IE10 +):
I dla zabawy, oto jeden wiersz, który będzie działał w starszych przeglądarkach (teraz naprawiony):
źródło
Najnowsze wersje JavaScript odczytują datę w formacie ISO8601, więc wszystko, co musisz zrobić, to zmienić spację na „T”, wykonując jedną z następujących czynności:
źródło
Aby jeszcze bardziej rozszerzyć rozwiązanie Marco. Prototypowałem bezpośrednio do obiektu String.
W ten sposób możesz przejść bezpośrednio do:
źródło
Jest prostszy sposób, ciąg sql timestamp:
Najbliższy format do znacznika czasu dla Date () do odebrania jest następujący, więc zastąp puste miejsce dla „T”:
Następnie utwórz obiekt daty:
wynikiem byłby obiekt daty:
źródło
Z odpowiedzi Andy'ego , dla AngularJS - Filtr
źródło
źródło
Najpierw możesz nadać obiektowi Date (klasa) JavaScript nową metodę 'fromYMD ()' do konwersji formatu daty YMD MySQL na format JavaScript, dzieląc format YMD na komponenty i używając następujących komponentów daty:
Teraz możesz zdefiniować swój własny obiekt (funkcja w świecie JavaScript):
a teraz możesz po prostu utworzyć datę z formatu daty MySQL;
źródło
Możesz użyć unix timestamp do bezpośredniego:
SELECT UNIX_TIMESTAMP(date) AS epoch_time FROM table;
Następnie pobierz epoch_time do JavaScript i jest to prosta sprawa:
var myDate = new Date(epoch_time * 1000);
Mnożenie przez 1000 wynika z tego, że JavaScript zajmuje milisekundy, a UNIX_TIMESTAMP podaje sekundy.
źródło
Szybkie wyszukiwanie w Google zapewniło to:
Źródło: http://snippets.dzone.com/posts/show/4132
źródło
Dlaczego tego nie zrobić:
źródło