ммм, а как проверить, что strDate имеет недопустимое значение вроде «30.30.2000»?
Доктор Но
2
@ user674887, вы можете сравнить значения после синтаксического анализа. например dateParts [1] -1 == date.getMonth ()
Джонатан Фингленд
Если у вас есть дата как TIME, так: "2014-05-20T16: 43: 56.71-06: 00" var partesFecha = solicitud.CreatedDate.split ("T") [0] .split ("-"); var createdDate = новая дата (partesFecha [0], (partesFecha [1] - 1), partesFecha [2]); Дата первого извлечения до T, а затем - год, месяц и день.
RolandoCC
не могу поверить, что вам нужно использовать разделение, чтобы получить ожидаемый формат даты в javascript
Клаудиу Крянга,
Кому-нибудь еще покажется странным, что в справочной статье Mozilla об объекте 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
Если вы используете пользовательский интерфейс jQuery, вы можете отформатировать любую дату с помощью:
<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 Я не считаю, что это полностью выходит за рамки, JavaScript и JQuery - обычная комбинация.
djna
Ответ не должен полагаться на библиотеку, которая не помечена или не упомянута в OP. Использование jQuery в качестве библиотеки дат является огромным излишеством, когда трехстрочная функция может выполнять ту же работу.
RobG
9
Мы используем этот код, чтобы проверить, является ли строка действительной датой
В большинстве случаев MomentJS является излишним, поскольку для использования чистого JavaScript требуются всего лишь сотни байтов, в то время как MomentJS составляет 12,4 КБ в сжатом виде. Удобно для разработчиков, но замедляет работу сайта. Не стоит.
Raptor
3
Я использовал следующий код в IE. (Совместимость с 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'))выдаст результаты, идентичные new Date('02.02.1999'), в том числе неверную дату в некоторых браузерах. Использование встроенного синтаксического анализатора, возможно, является худшим способом синтаксического анализа метки времени.
RobG 07
2
Эта функция также обрабатывает недопустимую дату 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;
}
Вы можете отформатировать дату просто сделав этот тип кода. В 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)
Вы должны использовать javascript, а не jquery, поскольку тега jquery нет
Сагар
счастлив ... смысл только понять Senario
Bachas
Что ж. Я не думаю, что ваш пример чем-то отличается от того, что дал Мартин Штауфчик. Фактически, в его ответе есть дополнительная логика для обработки недопустимых дат.
Sagar
Мартин Штауфчик справляется с теми условиями, которых обычно не бывает. Можете ли вы дать мне какой-нибудь календарь, который может стать недействительным. Почему мы должны писать такой длинный код, когда мы можем обрабатывать короткие пути. Было бы намного лучше, если бы Мартин Штауфчик также предоставил для обработки дату и время для обработки.
Ответы:
Увидеть:
Код:
var strDate = "03.09.1979"; var dateParts = strDate.split("."); var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);
источник
"Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies."
?Если вы используете пользовательский интерфейс jQuery, вы можете отформатировать любую дату с помощью:
<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/
источник
Мы используем этот код, чтобы проверить, является ли строка действительной датой
var dt = new Date(txtDate.value) if (isNaN(dt))
источник
ссылки: http://momentjs.com/docs/#/parsing/string/
Если вы используете moment.js, вы можете использовать режим "строка" + "формат"
moment(String, String); moment(String, String, String); moment(String, String, Boolean); moment(String, String, String, Boolean);
пример:
moment("12-25-1995", "MM-DD-YYYY");
источник
Я использовал следующий код в IE. (Совместимость с IE8)
var dString = "2013.2.4"; var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") ); alert( "my date:"+ myDate );
источник
Разработчики ASP.NET могут выбрать эту удобную встроенную программу (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
источник
Использовать объект Date:
var time = Date.parse('02.02.1999'); document.writeln(time);
Дайте: 917902800000
источник
new Date(Date.parse('02.02.1999'))
new Date(Date.parse('02.02.1999'))
к Javascriptnew Date(Date.parse('02.02.1999'))
выдаст результаты, идентичныеnew Date('02.02.1999')
, в том числе неверную дату в некоторых браузерах. Использование встроенного синтаксического анализатора, возможно, является худшим способом синтаксического анализа метки времени.Эта функция также обрабатывает недопустимую дату 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; }
источник
Вы можете отформатировать дату просто сделав этот тип кода. В 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)
источник