【发布时间】:2009-06-11 05:29:46
【问题描述】:
近似重复
任何人都知道VB.NET 或C# 中的函数需要两个日期,计算差值并以英文字符串输出差值吗?例如,如果我传递日期 '3/10/2009' 和 '3/25/2009',该函数将返回字符串“15 Days”,或者如果我传递日期 '3/10/2005' 和 '3/ 15/2007',该函数将返回“2 年 5 天”
【问题讨论】:
任何人都知道VB.NET 或C# 中的函数需要两个日期,计算差值并以英文字符串输出差值吗?例如,如果我传递日期 '3/10/2009' 和 '3/25/2009',该函数将返回字符串“15 Days”,或者如果我传递日期 '3/10/2005' 和 '3/ 15/2007',该函数将返回“2 年 5 天”
【问题讨论】:
在VB.NET中使用DateDiff函数
这里有一些代码可以为您提供年、月和日:
Dim Date1 = Date.Parse("1/10/2008")
Dim Date2 = Date.Parse("3/25/2009")
Dim Years = DateDiff(DateInterval.Year, Date1, Date2)
If Years > 0 Then
Date1 = Date1.AddYears(Years)
End If
Dim Months = DateDiff(DateInterval.Month, Date1, Date2)
If Months > 0 Then
Date1 = Date1.AddMonths(Months)
End If
Dim Days = DateDiff(DateInterval.Day, Date1, Date2)
Console.WriteLine("{0} years, {1} months, {2} days", Years, Months, Days)
输出: 1年2个月15天
您可以添加更多逻辑来有条件地显示每个跨度(仅当它不为零时),也可以使用年或年、月或月、日或日,但这段代码应该让您朝着正确的方向前进。
【讨论】:
offtopic 但相关:如果你想反过来做,即将“明天”解析为 Today+1,你可以使用:http://www.codeplex.com/DateTimeEnglishParse
【讨论】:
DateDiff 可以为您提供正确的数据(2 个日期之间的差异)。
但是正确的英文输出是什么?这个函数的参数会很复杂:
Pub Function dateToEnglish(ByVal 文化为 Culture.Info, ByVal 个性为 Personality, ByVal 心情为 Mood ....)
例如,“14天”的正确答案应该是什么
“情侣周” “两周” “14天” “半个月左右” “双周刊”
【讨论】: