2013-12-04 5 views
0
Function countdays(){ 


var oneday = 24*60*60*1000; 

var sd = $('#sdate').val();// Start date from DOM element type input text(DD/MM/YYYY) 

var start_date = new Date(sd); 

var ed = $('#edate').val();// End date from DOM element type input text(DD/MM/YYYY) 

var end_date = new Date(ed); 


var days = Math.floor((start_date.getTime() - end_date.getTime())/(oneday)); 

alert(days); 

} 

Я пытаюсь запустить эту функцию, когда я поставил дату в формате ДД/ММ/ГГГГ на дату начала и дату окончания, JavaScript принимает в формате ММ/ДД/ГГГГ.Получить дней между двумя датами

Есть ли способ, с помощью которого я могу держать свой формат даты в формате ДД/ММ/ГГГГ и получить разницу между датой начала и датой окончания

ответ

1

Никогда не использовать new Date(string), потому что это зависит от локали пользователя.

Вы должны разбить строку даты в год, месяц и день, а затем вызвать new Date(year, month - 1, day)

Вы правы использовать getTime найти количество дней.

1

Могу ли я сделать шаг для MomentJS при манипулировании DateTimes в JavaScript? Объекты Raw Date имеют много угловых случаев. Если вы используете MomentJS, вы можете использовать метод difference.

var start_date = moment(sd); 
var end_date = moment(ed); 

var days = end_date.diff(start_date, "days"); 

console.log(days); // should be the integer you want to test 

Что дополнительное приятно об использовании MomentJS является то, что код читается, когда вы вернетесь к логике 3-х месяцев с этого момента, и это позволяет настроить для странные вещи, как часовых поясов.

0

Попробуйте сами обрабатывать формат даты.

function parseDate(str) { 
    var d = str.split('/') 
    return new Date(parseInt(d[2]),parseInt(d[1]) - 1, parseInt(d[0])); 
} 
function countdays(){ 

var oneday = 24*60*60*1000; 

var start_date = parseDate($('#sdate').val()); 
var end_date = parseDate($('#edate').val()); 


var days = Math.floor((start_date.getTime() - end_date.getTime())/(oneday)); 

alert(days); 
} 
+0

@ivan Много я попробовал то, что сделал и написал на этот ответ, но все это не работает, так же он принимает в месяц первый, а не день первого – user3060271

+0

@ user3060271 Неверный ответ вы комментировал :) –

Смежные вопросы