mmm, ale jak sprawdzić, czy strDate ma nieprawidłową wartość, np. „30.30.2000”?
Dr. No
2
@ user674887, możesz porównać wartości po przeanalizowaniu. np. dateParts [1] -1 == date.getMonth ()
Jonathan Fingland
Jeśli masz obie daty TIME w następujący sposób: "2014-05-20T16: 43: 56.71-06: 00" var partesFecha = solicitud.CreatedDate.split ("T") [0] .split ("-"); var createdDate = new Date (partesFecha [0], (partesFecha [1] - 1), partesFecha [2]); Pierwsza data wyodrębnienia przed T, a później podział roku, miesiąca i dnia.
RolandoCC
nie mogę uwierzyć, że musisz użyć podziału, aby uzyskać oczekiwany format daty w javascript
Claudiu Creanga
Czy ktoś jeszcze uważa za dziwne, że artykuł referencyjny Mozilli dotyczący samego obiektu Date "Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies."?
NanoWizard
51
Jeśli korzystasz z interfejsu użytkownika jQuery, możesz sformatować dowolną datę za pomocą:
<html>
<body>
Your date formated: <spanid="date1"></span><br/></body>
</html>
var myDate = '30.11.2011';
var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate);
$('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));
+1 Nie uważam, żebym był całkowicie poza zakresem, JavaScript i JQuery to powszechna kombinacja.
djna
Odpowiedź nie powinna opierać się na bibliotece, która nie jest oznaczona ani wymieniona w OP. Używanie jQuery jako biblioteki dat jest ogromną przesadą, gdy 3-liniowa funkcja może wykonać to samo zadanie.
RobG,
9
Używamy tego kodu, aby sprawdzić, czy ciąg jest prawidłową datą
To w ogóle nie sprawdza poprawności dat, tylko sprawdza, czy konstruktor Date może ustawić prawidłową datę na podstawie danych wejściowych. To nie to samo.
W większości przypadków MomentJS to przesada, ponieważ używanie czystego JavaScript wymaga tylko setek bajtów, podczas gdy MomentJS jest 12,4kb spakowane gzipem. Wygodny dla programistów, ale spowalnia witrynę. Nie warto.
Raptor
3
Byłem używany zgodnie z kodem w IE. (Kompatybilny z IE8)
var dString = "2013.2.4";
var myDate = newDate( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") );
alert( "my date:"+ myDate );
@ Duke - new Date(Date.parse('02.02.1999'))da identyczne wyniki new Date('02.02.1999'), w tym Invalid Date w niektórych przeglądarkach. Korzystanie z wbudowanego analizatora składni jest prawdopodobnie najgorszym sposobem analizowania znacznika czasu.
RobG,
2
Ta funkcja obsługuje również nieprawidłową datę 29.2.2001.
functionparseDate(str) {
var dateParts = str.split(".");
if (dateParts.length != 3)
returnnull;
var year = dateParts[2];
var month = dateParts[1];
var day = dateParts[0];
if (isNaN(day) || isNaN(month) || isNaN(year))
returnnull;
var result = newDate(year, (month - 1), day);
if (result == null)
returnnull;
if (result.getDate() != day)
returnnull;
if (result.getMonth() != (month - 1))
returnnull;
if (result.getFullYear() != year)
returnnull;
return result;
}
możesz sformatować datę po prostu tworząc ten typ kodu w javascript.
// for eg.var inputdate=document.getElementById("getdate").value);
var datecomp= inputdate.split('.');
Var Date= newDate(datecomp[2], datecomp[1]-1, datecomp[0]);
//new date( Year,Month,Date)
Powinieneś używać javascript, a nie jquery, ponieważ nie ma tagu jquery
Sagar
szczęśliwy ... oznacza to po prostu zrozumieć senario
Bachas
Dobrze. Nie sądzę, żeby twój przykład był inny niż ten podany przez Martina Staufcika. W rzeczywistości jego odpowiedź ma dodatkową logikę do obsługi nieprawidłowych dat.
Sagar
Martin Staufcik radzi sobie z takimi stanami, które zwykle nie występują. czy możesz dać mi jakikolwiek kalendarz, który może spowodować unieważnienie. dlaczego powinniśmy pisać tak długi kod, skoro możemy sobie z nim poradzić w krótkim czasie Byłoby znacznie lepiej, gdyby Martin Staufcik również dał do obsługi datę z czasem do obsługi.
Odpowiedzi:
Widzieć:
Kod:
var strDate = "03.09.1979"; var dateParts = strDate.split("."); var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);
źródło
"Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies."
?Jeśli korzystasz z interfejsu użytkownika jQuery, możesz sformatować dowolną datę za pomocą:
<html> <body> Your date formated: <span id="date1"></span><br/> </body> </html>
var myDate = '30.11.2011'; var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate); $('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));
http://jsfiddle.net/mescalito2345/ND2Qg/14/
źródło
Używamy tego kodu, aby sprawdzić, czy ciąg jest prawidłową datą
var dt = new Date(txtDate.value) if (isNaN(dt))
źródło
referencje: http://momentjs.com/docs/#/parsing/string/
Jeśli używasz momentu.js, możesz użyć trybu „string” + „format”
moment(String, String); moment(String, String, String); moment(String, String, Boolean); moment(String, String, String, Boolean);
dawny:
moment("12-25-1995", "MM-DD-YYYY");
źródło
Byłem używany zgodnie z kodem w IE. (Kompatybilny z IE8)
var dString = "2013.2.4"; var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") ); alert( "my date:"+ myDate );
źródło
Programiści ASP.NET mają do wyboru tę poręczną wbudowaną opcję (na stronie musi znajdować się MS JS):
var date = Date.parseLocale('20-Mar-2012', 'dd-MMM-yyyy');
http://msdn.microsoft.com/en-us/library/bb397521%28v=vs.100%29.aspx
źródło
Użyj obiektu Date:
var time = Date.parse('02.02.1999'); document.writeln(time);
Podaj: 917902800000
źródło
new Date(Date.parse('02.02.1999'))
new Date(Date.parse('02.02.1999'))
Javascriptnew Date(Date.parse('02.02.1999'))
da identyczne wynikinew Date('02.02.1999')
, w tym Invalid Date w niektórych przeglądarkach. Korzystanie z wbudowanego analizatora składni jest prawdopodobnie najgorszym sposobem analizowania znacznika czasu.Ta funkcja obsługuje również nieprawidłową datę 29.2.2001.
function parseDate(str) { var dateParts = str.split("."); if (dateParts.length != 3) return null; var year = dateParts[2]; var month = dateParts[1]; var day = dateParts[0]; if (isNaN(day) || isNaN(month) || isNaN(year)) return null; var result = new Date(year, (month - 1), day); if (result == null) return null; if (result.getDate() != day) return null; if (result.getMonth() != (month - 1)) return null; if (result.getFullYear() != year) return null; return result; }
źródło
możesz sformatować datę po prostu tworząc ten typ kodu w javascript.
// for eg. var inputdate=document.getElementById("getdate").value); var datecomp= inputdate.split('.'); Var Date= new Date(datecomp[2], datecomp[1]-1, datecomp[0]); //new date( Year,Month,Date)
źródło