Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.99/67: Рейтинг темы: голосов - 67, средняя оценка - 4.99
 Аватар для Antrix
44 / 44 / 8
Регистрация: 11.04.2010
Сообщений: 139

Сравнение даты с текущей

02.02.2012, 23:25. Показов 13819. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Еще раз здравствуйте. Столкнулся еще с одной проблемой. Суть:
В таблице имеется колонка с датой последнего тех. обслуживания. Тех обслуживание для оборудования происходит каждые пол года (~180 дней). Допустим, что Т.О. последний раз происходило 20.12.2011. Как узнать, прошло ли уже пол года с момента последнего Т.О. (ссылаясь на текущую дату)?
То есть, сколько дней прошло с того момента - не нужно. Важно лишь вернуть 0 (если еще не прошло пол года) или 1 (если уже прошло).

Добавлено через 18 минут
Вот, вроде бы придумал решение:

C#
1
2
3
4
5
6
                string date_convert1 = Convert.ToString(dgvr.Cells[4].Value);  // Временная переменная для последней даты тех.обслуживания.
                DateTime dt_forCompare1 = Convert.ToDateTime(date_convert1); // Конечная переменная для последней даты тех.обслуживания.
                DateTime dt_forCompare2 = DateTime.Now; // Переменная текущей даты.
                TimeSpan diff = dt_forCompare2.Subtract(dt_forCompare1);
                int result = diff.Days / 30;
                MessageBox.Show(result.ToString());
Как думаете, правильное решение? Или можно сделать проще?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2012, 23:25
Ответы с готовыми решениями:

Из файла Excel прочитать даты рождения людей и сравнить с текущей
Вкратце ситуация такова: необходимо из .xls файла прочитать даты рождения людей и сравнить с текущей. Т.е., грубо говоря, определить когда...

Сравнение введённой даты и даты из таблицы БД
Не получается сравнить даты. Пробовал несколько способов, программа работает, но условие со сравнением тупо игнорируется. string...

Запись текущей даты в файл
Пытаюсь записать текущую дату в таблицу БД. Делаю так:SqlConnection sqlcon = new SqlConnection(connect); try ...

5
12 / 12 / 3
Регистрация: 22.10.2010
Сообщений: 137
02.02.2012, 23:31
сначала проверить текущее число и дата последнего ТО находятся в одном году или нет.
Если в одном, то вычисли разницу между значениями от начала года, если > 180 ставим 1, иначе ставим 0.
Если года разные, вычисляем сколько прошло дней от ТО до конца года и прибавляем сколько прошло в этом году дней. Число > 180 опять ставим 1, иначе ставим 0.

вот как-то так.
0
 Аватар для Antrix
44 / 44 / 8
Регистрация: 11.04.2010
Сообщений: 139
02.02.2012, 23:37  [ТС]
Как ни странно, но в данном случае нету разницы, какой год. То есть, подсчет идет правильно, с учетом года.
0
12 / 12 / 3
Регистрация: 22.10.2010
Сообщений: 137
03.02.2012, 00:15
а вы точно уверенны, что на выходе вы получаете либо 0, либо 1 ???

result

а если ввести 2010 год или ещё раньше.

Добавлено через 10 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string date_convert1 = Convert.ToString("01.01.2010");
 
            int result_;
 
            DateTime dt_forCompare1 = Convert.ToDateTime(date_convert1); // Конечная переменная для последней даты тех.обслуживания.
            DateTime dt_forCompare2 = DateTime.Now; // Переменная текущей даты.
 
            if (dt_forCompare1.Year == dt_forCompare2.Year)// сравниваем один и тот же год
                                                                        // или разные 
            {
                result_ = dt_forCompare2.DayOfYear - dt_forCompare1.DayOfYear;
            }
            else
            {
                result_ = (Convert.ToDateTime("31.12." + dt_forCompare1.Year).DayOfYear - dt_forCompare1.DayOfYear) + dt_forCompare2.DayOfYear;
            }
и уже result_ сравниваете < или > 180 дней.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.02.2012, 01:00
Лучший ответ Сообщение было отмечено как решение

Решение

Я бы не стал высчитывать разницу между нынешней датой и последней, а потом находить количество месяцев, исходя из количества дней. Поделив количество дней между датами на 30, мы всегда будем получать только примерный результат (где-то 30 дней, где-то 31, где-то 28, где-то 29). И хорошо, если ваша программа расчитывает дату обслуживания не для самолетов гражданской авиации или местной АЭС.
Я бы сделал так:

C#
1
2
3
DateTime lastService = DateTime.Parse((string)dgvr.Cells[4].Value);
if (DateTime.Now >= lastService.AddMonths(6)) // Проверка, прошло ли с последнего обслуживания 6 месяцев или более
   MessageBox.Show("Пора на ТО!");
Ну и в случае "вернуть 1 или 0":
C#
1
2
DateTime lastService = DateTime.Parse((string)dgvr.Cells[4].Value);
return DateTime.Now >= lastService.AddMonths(6) ? 1 : 0;
Если не нужно учитывать время дня, то замените DateTime.Now на DateTime.Today
4
 Аватар для Antrix
44 / 44 / 8
Регистрация: 11.04.2010
Сообщений: 139
03.02.2012, 02:38  [ТС]
Ух... вот это именно то, что нужно Хотя для нашего оборудования погрешность в пару недель - это нормально (не самолет или АЭС все же ), но огромнейшее вам спасибо за помощь!

Не по теме:

Если интересно, то наше "оборудование" - это капле-струйные маркераторы на кондитерской фабрике (те, что "точечками" дату, срок годности и прочие "Без гмо" печатают на этикетках). И это "ТО" ни что иное, как обычная замена чернильных фильтров, срок службы которых, в среднем, составляет от 6 до 8 месяцев (поэтому и не важна максимальная погрешность вплоть до секунды) :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2012, 02:38
Помогаю со студенческими работами здесь

Сравнить значение текущей даты с датой из БД
добрый день, подскажите пожалуйста как мне проверить значение даты (datetime.now) со значением даты в БД. пробовал так, не...

Сравнение даты
Как выполнить сравнение текущей даты с той, что в базе данных (поле с типом Date)? Если текущая дата больше той что хранится в БД, то...

Сравнение даты в запросе
Делаю запрос на создание массива. Необходимо занести в массив из таблицы access те ID_студента,у которых равна сегодняшнему дню или...

Сравнение даты запросом.
Доброго дня суток уважаемые форумчане, столкнулся с такой проблемкой: Нужно сравнить текущую дату (включительно со временем) с колонкой в...

Сравнение даты(DateTime, С#) с Access
Здравствуйте! Как можно сравнить в SQL запросе дату которая в базе с тему что у меня есть в программе. Тоесть у меня в программе есть 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru