Разница в датах на английском языке - PullRequest
2 голосов
/ 11 июня 2009

Рядом с дубликатами

Как рассчитать относительное время?

Как рассчитать чей-то возраст в C #?

Кто-нибудь знает, как работает функция в VB.NET или C #, которая будет принимать две даты, вычислять разницу и выводить эту разницу в английской строке? Например, если я передам даты «3/10/2009» и «25.03.2009», функция вернет строку «15 дней» или если я передам даты «3/10/2005» и «3 / 15/2007 ', функция будет возвращать «2 года, 5 дней»

Ответы [ 3 ]

3 голосов
/ 11 июня 2009

Используйте функцию DateDiff в 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 дней

Вы можете добавить немного больше логики для условного отображения каждого диапазона, только если он не равен нулю, а также использовать год или годы, месяц или месяцы и день или дни, но этот код должен направить вас в правильном направлении.

0 голосов
/ 11 июня 2009

DateDiff может дать вам правильные данные (разница между 2 датами).

Но каков правильный английский вывод? Параметры для этой функции будут сложными:

Паб Функция dateToEnglish (ByVal culture as Culture.Info, ByVal personal as Personality, ByVal настроение как настроение ....)

Например, каким должен быть правильный ответ на «14 дней»

"Пара недель" "Две недели" "14 дней" "около полугода" «Два раза в неделю»

0 голосов
/ 11 июня 2009

оффтоп, но связанный: если вы хотите сделать это наоборот, то есть для анализа «завтра» в Today + 1, вы можете использовать это: http://www.codeplex.com/DateTimeEnglishParse

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...