C# 英语中的日期差异 近乎重复的

C# 英语中的日期差异 近乎重复的,c#,.net,vb.net,date,C#,.net,Vb.net,Date,有人知道VB.NET或C#中的一个函数是如何计算两个日期的差值并将差值输出到英文字符串中的吗?例如,如果我传递了日期“3/10/2009”和“3/25/2009”,函数将返回字符串“15天”,或者如果我传递了日期“3/10/2005”和“3/15/2007”,函数将返回“2年5天”在VB.NET中使用该函数 以下是一些代码,可以为您提供年、月和日: Dim Date1 = Date.Parse("1/10/2008") Dim Date2 = Date.Parse("3/25/2

有人知道VB.NET或C#中的一个函数是如何计算两个日期的差值并将差值输出到英文字符串中的吗?例如,如果我传递了日期“3/10/2009”和“3/25/2009”,函数将返回字符串“15天”,或者如果我传递了日期“3/10/2005”和“3/15/2007”,函数将返回“2年5天”

在VB.NET中使用该函数

以下是一些代码,可以为您提供年、月和日:

    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,您可以使用以下内容:

DateDiff可以获得正确的数据(两个日期之间的差异)

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

Pub Function dateToEnglish(比瓦尔文化作为文化信息,比瓦尔个性作为个性, 拜瓦尔情绪作为情绪…)

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

“几个星期” “两周” “14天” “大约半个月”
“双周刊”

现在这就是我要找的!谢谢你,丹尼斯,滚开。。。省略“ago”。