Diferença de data em inglês

Perto de duplicatas

Como faço para calcular o tempo relativo?

Como faço para calcular a idade de alguém em c #?

Alguém sabe como de uma function em VB.NET ou C # que levará duas datas, calcule a diferença e produza essa diferença em uma string inglesa? Por exemplo, se eu passar as datas “3/10/2009” e “3/25/2009”, a function retornaria a string “15 dias” ou se eu passar as datas “3/10/2005” e “3 / 15/2007 ‘, a function retornaria “2 anos, 5 dias”

Use a function DateDiff no VB.NET

Aqui está um código que lhe dará anos, meses e dias:

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) 

Saída: 1 anos, 2 meses, 15 dias

Você poderia adicionar um pouco mais de lógica para mostrar condicionalmente cada período apenas se não for zero e também usar ano ou anos, mês ou meses e dia ou dias, mas esse código deve levá-lo na direção certa.

offtopic mas relacionado: Se você quiser fazer o inverso, ou seja, analisar “amanhã” no Today + 1, você pode usar isto: http://www.codeplex.com/DateTimeEnglishParse

DateDiff pode obter os dados corretos (diferença entre 2 datas).

Mas qual é a saída correta em inglês? Os parâmetros para esta function serão complexos:

Função Pub dateToEnglish (Cultura ByVal como Culture.Info, ByVal personalidade como Personalidade, ByVal mood como Humor ….)

Por exemplo, qual deve ser a resposta correta para “14 dias”

“A coupla weeks” “Duas semanas” “14 dias” “cerca de meio mês” “bi-semanal”