英语日期差异

时间:2009-06-11 05:29:46

标签: c# .net vb.net date

近似重复

  

How do I calculate relative time?

     

How do I calculate someone’s age in C#?

任何人都知道如何在VB.NET或C#中使用两个日期,计算差异并输出英文字符串中的差异?例如,如果我传递日期'3/10/2009'和'3/25/2009',函数将返回字符串“15 Days”或者如果我传递日期'3/10/2005'和'3 / 15/2007',该功能将返回“2年,5天”

3 个答案:

答案 0 :(得分:3)

使用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天

您可以添加更多逻辑来有条件地显示每个跨度,只有它不为零,并且还使用年份,年份,月份或月份和日期或天,但此代码应该让您朝着正确的方向前进。

答案 1 :(得分:0)

offtopic但相关:如果你想反过来做,那就是将“明天”解析为今天+ 1,你可以使用它:http://www.codeplex.com/DateTimeEnglishParse

答案 2 :(得分:0)

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

但是正确的英文输出是什么?此功能的参数将很复杂:

Pub功能dateToEnglish(ByVal文化为Culture.Info,ByVal人格为人格,    ByVal心情如情绪....)

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

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