英语日期差异

近似重复

我如何计算相对时间?

如何计算C#中某人的年龄?

任何人都知道如何在VB.NET或C#中使用两个日期,计算差异并输出英文字符串中的差异? 例如,如果我传递日期’3/10/2009’和’3/25/2009’,函数将返回字符串“15 Days”或者如果我通过日期’3/10/2005’和’3 / 15/2007’,该function将返回“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但相关:如果你想反过来做,那就是将“明天”解析为今天+ 1你可以使用这个: http : //www.codeplex.com/DateTimeEnglishParse

DateDiff可以为您提供正确的数据(两个日期之间的差异)。

但是正确的英语输出是什么? 此函数的参数将很复杂:

PubfunctiondateToEnglish(ByVal文化为Culture.Info,ByVal个性为Personality,ByVal心情为Mood ….)

例如,“14天”的正确答案应该是什么

“一个coupla周”“两周”“14天”“大约半个月”“双周”