我想计算两个日期之间的差异,并希望根据考虑到所有月份都是 30 天的差异将其转换为 2 年、5 个月或仅 3 个月或 2 天...
例如;
自(含):2009 年 3 月 12 日至(但不包括):2011 年 11 月 26 日
输出必须是:2 年 8 个月 14 天,不包括结束日期。
另一个例子;
开始时间:2010 年 1 月 26 日结束时间:2010 年 2 月 15 日
输出:从开始日期到结束日期的 20 天,但不包括结束日期
我可以用 Datediff 计算月、日或小时的差异,但问题是如何将其转换为年、月和日期。实际上这很复杂,因为我们不知道两个月之间有多少天(30,31 可能是 28 天)
我使用这个经典的 ASP 代码来转换差异,但有很多缺点。
Function Convert_Date_to_Text(tarih1,tarih2,useDates)
if (tarih1<>"" AND tarih2<>"") then
if Tarih_Araligi_Belirle(tarih1,tarih2,"day")>0 then
Date1_Year = Year(tarih1)
Date1_Month = Month(tarih1)
Date1_Day = Day(tarih1)
Date2_Year = Year(tarih2)
Date2_Month = Month(tarih2)
Date2_Day = Day(tarih2)
If (Date1_Month = 12) and (Date1_Day = 31) and
(Date2_Month = 1) and (Date2_Day = 1) Then
NoOfyears = Date2_Year - Date1_Year - 1
NoOfmonths = 0
NoOfdays = 1
Else
NoOfyears = Date2_Year - Date1_Year
NoOfmonths = Date2_Month - Date1_Month
NoOfdays = Date2_Day - Date1_Day
End If
If NoOfyears = 1 Then
FormatString = "1 year "
Else If NoOfyears <= 0 then
FormatString = ""
Else
FormatString = CStr(NoOfyears) & " years "
End If:End If
If NoOfmonths = 1 Then
FormatString = FormatString & "1 month"
Else If NoOfmonths <= 0 then
FormatString = FormatString
Else
FormatString = FormatString & CStr(NoOfmonths) & " months "
End If:End If
if useDates=1 then
If NoOfdays = 1 Then
FormatString = FormatString & "1 day"
Else If NoOfdays <= 0 Then
FormatString = FormatString
Else
FormatString = FormatString & CStr(NoOfdays) & " days"
End If:End If
end if
end if
end if
Convert_Date_to_Text = FormatString
End Function
该网站完美地计算了差异。时间与日期网
注意:我使用 Classic ASP 有几个原因(公司限制)。抱歉,我需要一个 ASP 函数。看起来 ASP 中不存在 TimeSpan :(
亲切的问候