Usiłuję przekonwertować ciąg w formacie dd-mm-rrrr na obiekt daty w JavaScript za pomocą:
var from = $("#datepicker").val();
var to = $("#datepickertwo").val();
var f = new Date(from);
var t = new Date(to);
("#datepicker").val()
zawiera datę w formacie dd-mm-rrrr. Gdy wykonam następujące czynności, pojawia się komunikat „Nieprawidłowa data”:
alert(f);
Czy to z powodu symbolu „-”? Jak mogę to przezwyciężyć?
javascript
date
użytkownik559142
źródło
źródło
Odpowiedzi:
Podzielone na "-"
Parsuj ciąg w potrzebne części:
Użyj wyrażenia regularnego
Dlaczego nie użyć wyrażenia regularnego?
Ponieważ wiesz, że będziesz pracował na sznurku złożonym z trzech części, oddzielonych łącznikami.
Jeśli jednak szukałeś tego samego ciągu w innym ciągu, regex byłby dobrym rozwiązaniem.
Ponowne użycie
Ponieważ robisz to więcej niż raz w przykładowym kodzie, a może gdzie indziej w bazie kodu, zawiń go w funkcji:
Używając jako:
Lub jeśli nie masz nic przeciwko jQuery w swojej funkcji:
Używając jako:
Nowoczesny JavaScript
Jeśli jesteś w stanie użyć bardziej nowoczesnego JS, restrukturyzacja tablicy jest również miłym akcentem:
źródło
przykład wyrażenia regularnego:
źródło
/
to separator i rok składający się z 2 cyfr (lub dowolnej liczby większej niż 1):replace( /(\d{2})[-/](\d{2})[-/](\d+)/, "$2/$1/$3")
new Date( "23. 2. 15".replace( /(\d+)[^d]+(\d+)[^d]+(\d+)/, "$2/$1/$3") );
Inna możliwość:
Dopasuj cyfry i zmień ich kolejność
źródło
var date = new Date(numbers[2], numbers[1]-1, numbers[0]);
Korzystając z przykładu moment.js :
źródło
źródło
$.datepicker.parseDate("dd-mm-yy", from);
aby poprawnie przeanalizować datę, na przykład24-01-2017
, sprawdźMożesz także wpisać datę w nawiasach
Date()
obiektu, na przykład:źródło
Użyj tego formatu:
myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00
źródło
parseDate
funkcję? Czy to natywna funkcja javascript?'2011-01-03'
i czas UTC na00:00:00
. Więc jeśli strefa czasowa użytkownika jest mniejsza niż UTC, to faktycznie będzie to dzień wcześniej.W moim przypadku
Wynik: Pon Lis 02 2015 04:40:13 GMT + 0100 (CET), a następnie używam .getTime () do pracy z milisekundami
źródło
Przyjęta odpowiedź ma błąd
Zastanów się, czy datepicker zawiera „77-78-7980”, co oczywiście nie jest prawidłową datą. Spowodowałoby to:
Co prawdopodobnie nie jest pożądanym rezultatem.
Przyczynę tego wyjaśniono na stronie MDN :
Lepszym sposobem rozwiązania problemu jest:
Daje to możliwość obsługi nieprawidłowych danych wejściowych.
Na przykład:
źródło
Możesz skorzystać z zewnętrznej biblioteki, aby ci pomóc.
http://www.mattkruse.com/javascript/date/source.html
Zobacz także: Przetwarzanie ciągu DateTime w JavaScript
źródło
Spójrz na Datejs dla wszystkich tych drobnych problemów związanych z datą. Możesz to rozwiązać również przez funkcję parseDate
źródło
Możesz użyć Regexp.
źródło
proste, po prostu podaj swoją datę do js Date Object
źródło
new Date('30/12/2018').toLocaleDateString()
? Zwraca nieprawidłową datę