Hello Guys,

I was working on a project of a hotel management system. I had to calculate the day between two given dates by DateTimePicker in vb.NET.

I named the DateTimePicker as "DTPcheckin" for the day when customer checks into the hotel and

"DTPcheckout" for the date of checkout.

To calculate the date and to facilitate myself for the later calculation and SQL comparisons I converted the date to the NUMBER OF DAYS FROM THE BEGINNING OF THE CALENDER .

LIKE "20 MARCH 2013" == 735328. that is 735328 days passed from date 01/01/0001.

U can use this anywhere you want. here is the code------

Dim checkin_day As Integer

Dim checkout_day As Integer

Dim checkin_month As Integer

Dim checkout_month As Integer

Dim checkin_y As Integer

Dim checkout_y As Integer

Dim staying As Integer

Dim mdcin As Integer

Dim mdcout As Integer

Dim daycin As Integer

Dim daycout As Integer

Private Sub calday()

checkin_day = CInt(DTPcheckin.Value.Day)

checkout_day = CInt(DTPcheckout.Value.Day)

checkin_month = CInt(DTPcheckin.Value.Month)

checkout_month = CInt(DTPcheckout.Value.Month)

checkin_y = CInt(DTPcheckin.Value.Year)

checkout_y = CInt(DTPcheckout.Value.Year)

mdcin = mdcount(checkin_month)

mdcout = mdcount(checkout_month)

daycin = checkin_y * 365 + mdcin + checkin_day

Dim temp2 As Integer = checkin_y - 1

temp2 = temp2 / 4

daycin = daycin + temp2

If (checkin_y Mod 400 = 0 Or (checkin_y Mod 100 <> 0 And checkin_y Mod 4 = 0)) And checkin_month > 2 Then

daycin = daycin + 1

End If

daycout = checkout_y * 365 + mdcout + checkout_day

Dim temp As Integer = checkout_y - 1

temp = temp / 4

daycout = daycout + temp

If (checkout_y Mod 400 = 0 Or (checkout_y Mod 100 <> 0 And checkout_y Mod 4 = 0)) And checkout_month > 2 Then

daycout = daycout + 1

End If

//duration is calculate by subtracting the daycin from daycout

duration = daycout - daycin

End Sub

//the mdcount function is

//this mdcount function calculate the number of days from 1st jan to the given month

Public Function mdcount(ByVal n As Integer) As Integer

Dim md As Integer

If n = 1 Then

md = 0

ElseIf n = 2 Then

md = 31

ElseIf n = 3 Then

md = 59

ElseIf n = 4 Then

md = 90

ElseIf n = 5 Then

md = 120

ElseIf n = 6 Then

md = 151

ElseIf n = 7 Then

md = 181

ElseIf n = 8 Then

md = 212

ElseIf n = 9 Then

md = 243

ElseIf n = 10 Then

md = 273

ElseIf n = 11 Then

md = 304

ElseIf n = 12 Then

md = 334

End If

Return md

End Function