【问题标题】:Date difference in English英语的日期差异
【发布时间】:2009-06-11 05:29:46
【问题描述】:

近似重复

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 天”

【问题讨论】:

标签: c# .net vb.net date


【解决方案1】:

在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天

您可以添加更多逻辑来有条件地显示每个跨度(仅当它不为零时),也可以使用年或年、月或月、日或日,但这段代码应该让您朝着正确的方向前进。

【讨论】:

  • 现在这就是我要找的!谢谢丹尼斯
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    但是正确的英文输出是什么?这个函数的参数会很复杂:

    Pub Function dateToEnglish(ByVal 文化为 Culture.Info, ByVal 个性为 Personality, ByVal 心情为 Mood ....)

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

    “情侣周” “两周” “14天” “半个月左右” “双周刊”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2021-10-26
      • 2022-01-19
      • 2012-12-13
      • 1970-01-01
      相关资源
      最近更新 更多