Reputation: 73
I want to Calculate no of days from two dates My date Format is dd-mmm-yyyy
Like "10-Nov-2020"
Can any one help me on same?
<script>
var deFromDate;
var deToDate;
var statarr;
function deFromDateChanged(s, e) {
deFromDate = (s.GetInputElement().value)
//statarr = deFromDate.split('-');
}
function deToDateChanged(s, e) {
deToDate = (s.GetInputElement().value)
var Difference_In_Time = deToDate.getTime() - deFromDate.getTime();
var Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);
alert(Difference_In_Days);
}
</script>
I am getting Error on getTime()
Is there any other Approach to do same
Upvotes: 0
Views: 51
Reputation: 12911
Using Date.parse()
(though it is discouraged due to inconsistent implementation)
function datediff(first, second) {
return Math.round((second-first)/(1000*60*60*24));
}
const deFromDate = Date.parse('10-Nov-2020');
const deToDate = Date.parse('15-Nov-2020');
console.log(datediff(deFromDate, deToDate));
Manual parsing
var months = {
'Jan' : 1,
'Feb' : 2,
'Mar' : 3,
'Apr' : 4,
'May' : 5,
'Jun' : 6,
'Jul' : 7,
'Aug' : 8,
'Sep' : 9,
'Oct' : 10,
'Nov' : 11,
'Dec' : 12
}
function parseDate(str) {
var [dd, mmm, yyyy] = str.split('-');
return new Date(yyyy, months[mmm]-1, dd); // months are 0 indexed
}
function datediff(first, second) {
return Math.round((second-first)/(1000*60*60*24));
}
const deFromDate = parseDate('10-Nov-2020');
const deToDate = parseDate('15-Nov-2020');
console.log(datediff(deFromDate, deToDate));
Upvotes: 1
Reputation: 73
I tried using Regex:
<script>
var deFromDate;
var deToDate;
var dt1;
var dt2;
function deFromDateChanged(s, e) {
deFromDate = (s.GetInputElement().value)
dt1 = new Date(deFromDate.replace(/(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"));
}
function deToDateChanged(s, e) {
deToDate = (s.GetInputElement().value)
dt2 = new Date(deToDate.replace(/(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"));
var result = ((dt2 - dt1) / 86400000);
alert(result);
}
</script>
Upvotes: 0