2017-01-23 11 views
0

Я работаю над простой программой, которая вычисляет возраст участника и применяет правильный членский взнос в зависимости от возраста.C# Форматирование TimeSpan, чтобы показать дату

 public static DateTime DateTime() 
    { 
     DateTime birth = new System.DateTime(1991, 9, 20); 
     DateTime today = new System.DateTime(2017, 1, 22); 
     TimeSpan age = today - birth; 
     Console.WriteLine(age); 
     return birth; 
    } 

Вот код, я использую, мое возвращение значение

9256.00:00:00 

Как разобрать это в более читаемом гггг, мм, формат дд?

+2

что формат не имеет смысла для временного интервала. –

+0

Что вы на самом деле хотите отобразить? –

+0

Если вам нужен «возраст», как понимают большинство людей - количество людей в возрасте полного года - вы можете использовать http://stackoverflow.com/questions/9/how-do-i-calculate-someones-age- в-c, который дает результат только за годы. –

ответ

0

Использование nodatime

var ld1 = new LocalDate(1991, 9, 20); 
var ld2 = new LocalDate(2017, 1, 22); 
var period = Period.Between(ld1, ld2); 

Debug.WriteLine(period.Years); 
Debug.WriteLine(period.Months); 
Debug.WriteLine(period.Days); 
+0

Спасибо! Это помогает мне добраться туда, где я должен быть. –

0

Как Jon Skeet выразился:

TimeSpan не имеет осмысленное понятие «лет», потому что это зависит от начальной и конечной точкой.

Почему бы вам не попробовать его Noda Time?

Вы можете вручную загрузить here

Вы можете также разделить на 365,25 (среднее число дней в году), и получить целый ряд

Convert.ToInt32(age.Days/365.25); 
+0

Голосование как дубликат - лучший вариант, когда вам нечего добавить к существующему ответу из другого вопроса. –

+0

Отредактировано, чтобы добавить немного ответа. –