2015-08-06 3 views
1

как я могу изменить количество дней до (год, месяц & дней) с классом DateTime в C# . Фактически я хочу рассчитать точную дату рождения с днем ​​рождения. ? лет? месяц ....? секунд.изменить число дней до даты

мой код:

DateTime a = new DateTime(1993, 6, 10, 0, 0, 0); 
      DateTime now = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour 
       ,DateTime.Now.Minute,DateTime.Now.Second); 
      TimeSpan b = now - a; 
      int c = b.Days; 

ответ

3

Вы можете использовать NodaTime

var period = NodaTime.Period.Between(
       new NodaTime.LocalDateTime(1993, 6, 10, 0, 0), 
       NodaTime.LocalDateTime.FromDateTime(DateTime.Now)); 

Console.WriteLine("{0} {1} {2} {3} {4}",period.Years,period.Months,period.Days, 
             period.Hours,period.Minutes); 
0

Там не простая функции для этого, что я могу видеть. т.е. нет возможности сделать это с помощью простой функции DateTime. Если бы мне пришлось поместить его в код, это выглядело бы примерно так:

DateTime birthday = new DateTime(1993, 6, 10); 
DateTime current; 
DateTime nowComparison = DateTime.Now; 
int years = nowComparison.Year - birthday.Year; 
if (nowComparison < birthday.AddYears(years)) 
    years -= 1; 
current = birthday.AddYears(years); // current is less than a year ago. 

int months; 
if(current.Year != nowComparison.Year) 
{ 
    months = nowComparison.Month + (12 - current.Month); 
} 
else 
{ 
    months = nowComparison.Month - current.Month; 
} 
if (nowComparison < current.AddMonths(months)) 
    months -= 1; 
current = current.AddMonths(months); // current is less than a month ago. 

int days = nowComparison.Subtract(current).Days; 
current = current.AddDays(days); // current is less than a day ago. 

int hours = nowComparison.Subtract(current).Hours; 
current = current.AddHours(hours); // current is less than an hour ago. 

int minutes = nowComparison.Subtract(current).Minutes; 
current = current.AddMinutes(minutes); // current is less than a minute ago. 

int seconds = nowComparison.Subtract(current).Seconds; 
current = current.AddSeconds(seconds); // current is less than a second ago. 
Смежные вопросы