2012-04-28 5 views
0

Я пытаюсь найти время между двумя датами, одним из которых является текущий день (сегодня), а другой - определенный пользователем срок.C# forms - Получение времени между двумя датами

Я работаю с C# Windows Forms, и я использовал «время выбора даты», так что пользователь может выбрать дату окончания и я создал строку под названием Сегодня и используется

string Today = System.DateTime.Today.ToString("dd-mm-yyyy"); 

как текущая дата. Но я не знаю, как найти промежуток времени между этими двумя точками (так как они являются строками), моя программа - это простой «список дел», где продолжительность задачи - дни и недели («yyyy» - это просто для эстетических целей его можно удалить, если необходимо).

Я просмотрел интернет, и все, что я могу найти, это как это сделать с помощью «DateTime» вместо строк (или я чего-то не хватает?).

Любая помощь будет значительно оценена.

ответ

4

Используйте свойство «Value» вашего DateTimePicker, чтобы получить значение DateTime и использовать DateTime.Now, чтобы получить значение DateTime для текущего времени (в локальной временной зоне).

Если вы только вычитаете даты (без компонента времени), перейдите к свойству Date обоих объектов DateTime перед вычитанием.

DateTime userDate = dateTimePicker.Value.Date; 
DateTime currentDate = DateTime.Now.Date; 
TimeSpan difference = userDate.Subtract(currentDate); //assuming deadline is in the future 
+0

Я попробовал то, что вы предложили, но я не знаю, как я показал бы отрезок времени, я играл вокруг с датой, днем ​​и ToString() свойств, но я не могу показаться, добраться куда угодно. Все, что у меня получилось, было «00:00:00», я думаю, это потому, что он ищет минуты и часы и не получает, потому что я отправляю его. Есть идеи? – Raker

+0

Что вы хотите отобразить? Общее количество дней или более конкретные измерения? Если вы только после нескольких дней, используйте свойство TotalDays для TimeSpan (см. Docs: http://msdn.microsoft.com/en-us/library/system.timespan.aspx). – roken

+0

У меня это есть, я использовал разные свойства Timespan, чтобы получить то, что я искал. Спасибо за вашу помощь. – Raker

3

Не используйте две строки - используйте фактические DateTime экземпляров. Строки не могут и не могут «понять» даты - поэтому существует объект DateTime.

Когда вы вычитаете две даты друг от друга, вы получаете экземпляр TimeSpan. Это дает вам разницу во времени.

TimeSpan difference = date1 - date2; 
0

AS Одед упоминает строку это не лучший подход. DateTimes не могут быть вычтены друг от друга и дают вам TimeSpan, который представляет, ну, что, временной интервал.

Вот пример MSDN, который должен прояснить ситуацию.

DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0); 
DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0); 
TimeSpan travelTime = arrival - departure; 
Console.WriteLine("{0} - {1} = {2}", arrival, departure, travelTime);  
// The example displays the following output: 
//  6/13/2010 10:47:00 PM - 6/12/2010 6:32:00 PM = 1.04:15:00 
Смежные вопросы