Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сравнить DateTime с заданной "точностью"? / 13 сообщений из 13, страница 1 из 1
04.04.2014, 18:26
    #38605764
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
Т. е., например, сравнить только годы, месяцы и числа. Или только часы и минуты. Или только годы и секунды.

Самое первое, что пришло в голову, сделать ToString("нужный формат") на обе DateTime-переменные, затем обратно DateTime.Parse() и сравнивать получившиеся значения. Но, может, есть менее костыльный вариант?
...
Рейтинг: 0 / 0
04.04.2014, 18:44
    #38605776
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
user7320Самое первое, что пришло в голову, сделать ToString("нужный формат") на обе DateTime-переменные, затем обратно DateTime.Parse() и сравнивать получившиеся значения.

Что-то не пойму идею, и что в итоге получается? Давай пример сравнения
...
Рейтинг: 0 / 0
04.04.2014, 18:46
    #38605778
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
user7320,
TimeSpan ?
...
Рейтинг: 0 / 0
04.04.2014, 18:58
    #38605788
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
user7320Или только годы и секунды.

Чем не устраивает
Код: c#
1.
2.
if (dt1.Year == dt2.Year && dt1.Second == dt2.Second)
{ .. }
...
Рейтинг: 0 / 0
04.04.2014, 18:59
    #38605789
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
user7320, если нужно сравнивать только дату или время, то у DateTime есть поля Date и Time. В остальных случаях лучше написать фукнцию сравнения только нужных частей. Потому что плодить строки ради сравнения чисел явно неудачная идея.
...
Рейтинг: 0 / 0
04.04.2014, 18:59
    #38605790
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
carrotikuser7320,
TimeSpan ?
Чего-то я туплю - как мне сравинть с его помощью две даты по заданным полям структуры DateTime?
...
Рейтинг: 0 / 0
04.04.2014, 19:01
    #38605795
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
Pallarisuser7320Самое первое, что пришло в голову, сделать ToString("нужный формат") на обе DateTime-переменные, затем обратно DateTime.Parse() и сравнивать получившиеся значения.

Что-то не пойму идею, и что в итоге получается? Давай пример сравнения
Хочу сравнить два произвольных DateTime по заданным полям этой структуры.

Как я делаю сейчас - как я пояснил:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static bool Compare<DateTime>(this DateTime d, DateTime dateToCompare, string filter)
{
	// "Обрезаю" обе переменные по нужным мне полям структуры DateTime.
	
	string filter = "dd/MM/yyyy hh:mm:ss";
	
	String dateToCompareString = dateToCompare.ToString(filter);
	String dString = d.ToString(filter);	
	DateTime dateToCompareNew = DateTime.Parse(dateToCompareString);
	DateTime dNew = DateTime.Parse(dString);
	
	// Теперь обе переменные содержат только те поля, которые мне нужны - можно сравнивать.
	return dNew > dateToCompareNew;
}



Есть что-то подобное, встроенное в .NET, чтобы мне самому такую функцию не писать?
...
Рейтинг: 0 / 0
04.04.2014, 19:03
    #38605796
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
filter я в качестве примера внутри метода присвоил.
...
Рейтинг: 0 / 0
04.04.2014, 19:13
    #38605806
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
user7320carrotikuser7320,
TimeSpan ?
Чего-то я туплю - как мне сравинть с его помощью две даты по заданным полям структуры DateTime?

.. я, может, не совсем понимаю, что вы подразумеваете под сравнением ... но что-то типа так:
Код: c#
1.
2.
3.
DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0);
DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0);
TimeSpan travelTime = arrival - departure;



..а потом
Код: c#
1.
2.
travelTime.Days
travelTime.Hours



ну и т.д.
...
Рейтинг: 0 / 0
04.04.2014, 19:31
    #38605817
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
user7320Есть что-то подобное, встроенное в .NET, чтобы мне самому такую функцию не писать?

Наверное нет. Я б сделал так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
class DateTimeComparer
{
    public const int seconds = 1;
    public const int minutes = 2;
    public const int hours = 4;
    public const int days = 8;
    public const int monthes = 16;
    public const int years = 32;

    public static bool IsGreater (DateTime dt1, DateTime dt2, int filter)
    {
         if ((filter & years) > 0 && dt1.Year > dt2.Year)
         {
              return true;
         }
         if ((filter & monthes) > 0 && dt1.Month > dt2.Month)
         {
              return true;
         }
         .....
         return false;
    }
}

if (DateTimeComparer.IsGreater(DateTime.Now, someDateTime, DateTimeComparer.years | DateTimeComparer.monthes))
{
...
}



Ну или как-то так
...
Рейтинг: 0 / 0
04.04.2014, 21:36
    #38605872
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
carrotikuser7320пропущено...

Чего-то я туплю - как мне сравинть с его помощью две даты по заданным полям структуры DateTime?

.. я, может, не совсем понимаю, что вы подразумеваете под сравнением ... но что-то типа так:
Код: c#
1.
2.
3.
DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0);
DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0);
TimeSpan travelTime = arrival - departure;



..а потом
Код: c#
1.
2.
travelTime.Days
travelTime.Hours



ну и т.д.
Не, не пойдёт - надо ещё на равенство. И у вас заранее задат формат - вы его в конструкторе задаёте. А у меня с неизвестным форматом приходят.
...
Рейтинг: 0 / 0
04.04.2014, 21:37
    #38605873
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
Pallarisuser7320Есть что-то подобное, встроенное в .NET, чтобы мне самому такую функцию не писать?

Наверное нет. Я б сделал так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
class DateTimeComparer
{
    public const int seconds = 1;
    public const int minutes = 2;
    public const int hours = 4;
    public const int days = 8;
    public const int monthes = 16;
    public const int years = 32;

    public static bool IsGreater (DateTime dt1, DateTime dt2, int filter)
    {
         if ((filter & years) > 0 && dt1.Year > dt2.Year)
         {
              return true;
         }
         if ((filter & monthes) > 0 && dt1.Month > dt2.Month)
         {
              return true;
         }
         .....
         return false;
    }
}

if (DateTimeComparer.IsGreater(DateTime.Now, someDateTime, DateTimeComparer.years | DateTimeComparer.monthes))
{
...
}



Ну или как-то так
Чёй-то мой расширяющий метод кажется попроще, хоть и парочку преобразований делает. А главное, он гибкий за счёт произвольного фильтра.
...
Рейтинг: 0 / 0
04.04.2014, 21:43
    #38605876
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сравнить DateTime с заданной "точностью"?
Поискал в Инете - действительно, подобные сравнения только через кастомный код - встроенного ничего нет. Ну, значит, придётся написать тройку расширений по моему образцу выше - на больше, меньше и равно.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сравнить DateTime с заданной "точностью"? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]