Если ваши даты представляют собой строки в общей форме d / m / y или какой-либо их вариант, вы можете использовать:
function toDate(s) {
var s = s.split('/');
return new Date(s[2], --s[1], s[0]);
}
Вы можете подтвердить ввод, или нет, в зависимости от того, насколько уверенновы находитесь в согласованности предоставленных данных.
Изменить, чтобы ответить на комментарии
Чтобы разрешить различные разделители (например, точка (.) или дефис (-)), регулярное выражение для разделения можетbe:
var s = s.split(/[/\.-]/);
Дата будет разделена на числа даты, месяца и года соответственно.Части передаются в конструктор Date для создания локального объекта даты для этой даты.Поскольку месяцы javascript имеют нулевое индексирование (январь равен 0, февраль равен 1 и т. Д.), Номер месяца должен быть уменьшен на единицу, следовательно, --s[1]
.
/ Edit
Для сравнения двух датобъекты (т.е. получают разницу в миллисекундах) просто вычитают один из другого.Если вы хотите получить результат в днях, то разделите его на число миллисекунд в дне и раунде (чтобы учесть любые незначительные различия, вызванные переходом на летнее время).
Так что, если вы хотите увидеть, сколько дней междусегодня и дата, используйте:
function diffToToday(s) {
var today = new Date();
today.setHours(0,0,0);
return Math.round((toDate(s) - today) / 8.64e7);
}
alert(diffToToday('2/8/2011')); // -1
alert(diffToToday('2/8/2012')); // 365
PS.«Финский» формат данных - это тот формат, который используется в подавляющем большинстве стран мира, которые не используют даты в формате ISO.