Jak przekonwertować ciąg znaków na obiekt daty i czasu w javascript, określając ciąg formatu?
Szukam czegoś takiego:
var dateTime = convertToDateTime("23.11.2009 12:34:56", "dd.MM.yyyy HH:mm:ss");
javascript
datetime
type-conversion
Serhat Ozgel
źródło
źródło
Odpowiedzi:
Myślę, że to może ci pomóc: http://www.mattkruse.com/javascript/date/
Istnieje
getDateFromFormat()
funkcja, którą możesz nieco ulepszyć, aby rozwiązać problem.Aktualizacja: dostępna jest zaktualizowana wersja próbek dostępna na javascripttoolbox.com
źródło
TypeError: Object Date has no method 'getDateFromFormat'
Użyj jeśli twój ciąg jest zgodny z . Jeśli twój format jest niekompatybilny (tak mi się wydaje), musisz sam przeanalizować ciąg (powinno to być łatwe z wyrażeniami regularnymi) i utworzyć nowy obiekt Date z wyraźnymi wartościami dla roku, miesiąca, daty, godziny, minuty i sekundy.
new Date(dateString)
Date.parse()
źródło
@Christoph Wspomnienia za pomocą wyrażenia regularnego, aby rozwiązać problem. Oto czego używam:
Nie jest bynajmniej inteligentny, wystarczy skonfigurować regex i
new Date(blah)
dopasować go do swoich potrzeb.Edycja: Może nieco bardziej zrozumiały w ES6 przy użyciu destrukcji:
Ale szczerze mówiąc, obecnie sięgam po coś takiego jak Moment
źródło
/g
flagi tylko po to,lastIndex
aby0
później ustawić ? Po prostu nie używaj globalnego dopasowania./g
była niechlujna kopia / wklej z istniejącego projektu.lastindex
został dodany przez redaktora (aby zwalczyć, jak\g
sądzę?). Teraz je usunę. Dziękuję za zwrócenie na to uwagi.W JavaScript nie ma żadnych zaawansowanych procedur formatowania daty / godziny.
Będziesz musiał użyć zewnętrznej biblioteki do sformatowania danych wyjściowych, „JavaScript Date Format” z Flagrant Badassery wygląda bardzo obiecująco.
W przypadku konwersji wejściowej poczyniono już kilka sugestii. :)
źródło
Sprawdź Moment.js . Jest to nowoczesna i potężna biblioteka, która rekompensuje żałosne funkcje JavaScript (lub ich brak).
źródło
Tylko dla zaktualizowanej odpowiedzi tutaj, dobra biblioteka js na http://www.datejs.com/
źródło
źródło
Biblioteka zewnętrzna to przesada w analizowaniu jednej lub dwóch dat, więc utworzyłem własną funkcję, korzystając z rozwiązań Oli i Christoph . W Europie Środkowej rzadko używamy czegoś, ale format OP, więc powinno to wystarczyć dla prostych aplikacji używanych tutaj.
źródło
Date.parse()
jest dość inteligentny, ale nie mogę zagwarantować, że format zostanie poprawnie przeanalizowany.Jeśli tak się nie stanie, musisz znaleźć coś, co rozwiąże te dwa problemy. Twój przykład jest dość prosty (jest to czysto cyfry), więc odrobina REGEX (a nawet
string.split()
- może być szybsza) w połączeniu z niektórymiparseInt()
pozwoli ci szybko umówić się na randkę.źródło
źródło
Żeby dać moje 5 centów.
Mój format daty to dd.mm.rrrr (format brytyjski) i żaden z powyższych przykładów nie działał dla mnie. Wszystkie analizatory analizowały mm jako dzień, a dd jako miesiąc.
Znalazłem tę bibliotekę: http://joey.mazzarelli.com/2008/11/25/easy-date-parsing-with-javascript/ i zadziałało, ponieważ możesz podać kolejność pól takich jak to:
Mam nadzieję, że to komuś pomoże.
źródło
Moment.js zajmie się tym:
źródło
Możesz do tego użyć biblioteki moment.js. Używam tylko do uzyskania danych wyjściowych zależnych od czasu, ale możesz wybrać rodzaj formatu, który chcesz wybrać.
Odniesienie:
1. biblioteka chwil: https://momentjs.com/
2. funkcje specyficzne dla godziny i daty: https://timestamp.online/article/how-to-convert-timestamp-to-datetime-in-javascript
i możesz wywołać tę metodę:
Mam nadzieję, że to pomoże. Ciesz się kodowaniem.
źródło
Aby w pełni spełnić ciąg Date.parse, należy przekonwertować ciąg znaków na format dd-mm-RRRR, jak określono w RFC822, jeśli użyjesz parsowania rrrr-mm-dd, możesz popełnić błędy.
źródło
źródło