2013-07-05 4 views
0

Мне было интересно, существует ли уже реализованный Datecounter, который будет считать, сколько лет, месяцев и дней оно отличается от даты к другой? И если есть разница, функция будет подсчитывать, сколько лет, месяцев и дней в разнице и хранить ее, и нам нужно использовать только Console.Writeline(timecomparer.yearDiffCounter);, чтобы рассказать им, сколько лет она находится в разницеГод, месяц, день отличается счетчиком (дата) в C#

Например (псевдокод, не 100% правильно)!

Date date1 = new Date("2013-07-05"); 
Date date2 = new Date("2010-07-05"); 
TimeComparer compare = new TimeComparer(); 

compare.differDate(date1,date2); //here it will count and give 3 years difference 
+7

DateDiffer = Date1-Date2, а затем принимать DateDiffer.Years в течение лет отличаются – wudzik

+0

aha cool! Благодаря! –

+1

@wudzik 'Timespan' имеет' Year'? – V4Vendetta

ответ

2

Использование Noda Time:

LocalDate date1 = new LocalDate(2013, 07, 05); 
LocalDate date2 = new LocalDate(2010, 07, 05); 
Period period = Period.Between(date2, date1, PeriodUnits.YearMonthDay); 
Console.WriteLine("{0} years, {1} months, {2} days", 
        period.Years, period.Months, period.Days); 

// "3 years, 0 months, 0 days" 
+0

Разве это не кнопка «редактирования»? –

+0

@Timothy - Почему это было бы редактированием? Это фактический ответ на исходный вопрос. И его * только * ответ до сих пор, что на самом деле доставляет то, о чем просили, поэтому он не заслуживает пониженного голосования. –

+0

То, что я имел в виду под этим, теперь есть два ответа, в основном говорящих одно и то же, это просто говорит вам, как вы это сделаете. Извините за редактирование (ничего не изменилось), но мне нужно было это сделать, чтобы исправить нижний уровень. –

1

Мощное решение для времени Noda Time от Jon Skeet.

+0

Я отправил ответ, используя Noda Time, как вы предложили. –

-1

булевы операции на DateTime объектов выход C# TimeSpan объектов

DateTime Yesterday = DateTime.Now().AddDays(-1); 
DateTime Today = DateTime.Now(); 

TimeSpan difference = Today - Yesterday; 

временной параметр может затем сказать вам, сколько дней, часов, минут, секунд и т.д. он имеет.

Если вы хотите лет от промежутка времени, см this answer by brianary

+1

«TimeSpan» не имеет значения в течение многих лет, потому что это не точная мера прошедшего времени. –

+0

Итак, TimeSpan не может прямо сказать вам, сколько лет прошло, но науке о ракетах не пришло в голову выяснить, как рассчитать, сколько лет она охватывает. Также, как вы понимаете, это «не точная мера прошедшего времени». Нужно ли нам знать время до длины планка? какой * есть * планковый период времени? –

+0

На заметку о действительно интересных вопросах, @MattJohnson: what * is * ваша личная вендетта с частью, связанной с датой и временем .NET framework? –

1
public string DateDiff(DateTime DateTime1, DateTime DateTime2) 
{ 
    string dateDiff = null; 

    TimeSpan ts1 = new TimeSpan(DateTime1.Ticks); 
    TimeSpan ts2 = new TimeSpan(DateTime2.Ticks); 
    TimeSpan ts = ts1.Subtract(ts2).Duration(); 
    dateDiff = ts.Days.ToString() + "day" 
     + ts.Hours.ToString() + "hours" 
     + ts.Minutes.ToString() + "minutest" 
     + ts.Seconds.ToString() + "seconds"; 

    return dateDiff; 
} 

мой путь можно изменить.

+1

ОП запросил годы, месяцы и дни. Вы не можете получить это из TimeSpan. –

+0

У меня есть код Java. Мне очень жаль .. Я отредактирую – PengWu

+0

Вы все еще можете получать месяцы и дни с разницы. –