Namespace CustomControls
Public Class DateTimePicker
Inherits System.Windows.Forms.DateTimePicker
Public Function RelativeDate() As String
Dim curDayOfWeek As Integer = DatePart(DateInterval.Weekday, Date.Now)
Dim DaysDiff As Integer = curDayOfWeek - Math.Ceiling(DateDiff(DateInterval.Hour, Me.Value, Date.Now) / 24)
Select Case DaysDiff
Case curDayOfWeek
' today
Return "Today"
Case curDayOfWeek + 1 To 7
' future, this week
Return (DaysDiff - curDayOfWeek).ToString & " Day(s) From Now"
Case 8 To 28
' future, less than a month
Return (DaysDiff \ 7).ToString & " Week(s) From Now"
Case 29 To 365
' future, less than a year; approximate
Return (DaysDiff \ 28).ToString & " Month(s) From Now"
Case Is > 365
' future, more than a year
Return (DaysDiff \ 365).ToString & " Year(s) From Now"
Case 1 To curDayOfWeek - 1
' past, this week
Return (curDayOfWeek - DaysDiff).ToString & " Day(s) Ago"
Case -6 To 0
' past, last week
Return "Last Week"
Case -29 To -7
' past, less than a month
Return System.Math.Abs((DaysDiff \ 7)).ToString & " Week(s) Ago"
Case -366 To -30
' past, less than a year
Return System.Math.Abs((DaysDiff \ 28)).ToString & " Month(s) Ago"
Case Is < -366
' past, more than a year
Return System.Math.Abs((DaysDiff \ 365)).ToString & " Year(s) Ago"
Case Else
' this shouldn't happen
Return "Error"
End Select
End Function
End Class
End Namespace