Автор Тема: Сравнение прошедшей даты  (Прочитано 1427 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн Nefakt [?]

  • Новичок
  • *
  • Сообщений: 74
  • Репутация: 3
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Сравнение прошедшей даты
« Создано: Октябрь 20, 2014, 00:31:18 »
Всем привет.
У меня есть код который сравнивает дату компьютера с датой в .ini файле и если совпадает то программа выводит сообщение.
Сейчас мне нужно что бы скрипт сравнивал не только совпадающую дату но и мог сравнивать дату компьютера с прошедшей датой.
Например сегодня 20.10.2014 если написать эту дату в файл он выдаст сообщение, но если вписать 19.10.2014 он уже не видит. Вот хотелось бы что бы он сравнивал и настоящую и прошедшую дату с датами в .ini файле.
Вот код который сейчас
Код: AutoIt [Выделить]
$rs = IniReadSection(@ScriptDir & '\settings.ini', 'Date')
If @error Then
Else
$nd = @MDAY & '.' & @MON & '.' & @YEAR
For $i = 1 To $rs[0][0]
    If $nd == $rs[$i][1] Then
        MsgBox(0, "", 'Дата' & $rs[$i][0] )
        EndIf
Next
EndIf

Пробовал изменить это
Код: AutoIt [Выделить]
    If $nd == $rs[$i][1] Then

На это
Код: AutoIt [Выделить]
    If $nd >= $rs[$i][1] Then

Ни чего не происходит
Если написать так
Код: AutoIt [Выделить]
    If $nd <= $rs[$i][1] Then

То он выводит все даты и настоящую и прошедшую и будущею которые записаны в .ini
Заранее спасибо

Русское сообщество AutoIt

Сравнение прошедшей даты
« Отправлен: Октябрь 20, 2014, 00:31:18 »

Оффлайн snoitaleR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 854
  • Репутация: 222
  • Пол: Мужской
    • Награды
Re: Сравнение прошедшей даты
« Ответ #1, Отправлен: Октябрь 20, 2014, 11:14:00 »
Nefakt
Попробуйте сохранять даты в обратной последовательности, так будет проще сравнивать строки:
Код: (settings.ini) [Выделить]
  1. 1=2014.10.20
  2. 2=2014.10.19
  3. 3=2014.10.21
  4. 4=2014.10.18
  5. 5=2014.09.30
Код: AutoIt [Выделить]
$rs = IniReadSection(@ScriptDir & '\settings.ini', 'Date')
If @error Then
Else
 $nd = @YEAR & '.' & @MON & '.' & @MDAY
 For $i = 1 To $rs[0][0]
  If $nd >= $rs[$i][1] Then
   MsgBox(0, "", 'Дата' & $rs[$i][0] )
  EndIf
 Next
EndIf
 

Главное в жизни человека - это отношение...

Оффлайн Nefakt [?]

  • Новичок
  • *
  • Сообщений: 74

  • Автор темы
  • Репутация: 3
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Сравнение прошедшей даты
« Ответ #2, Отправлен: Октябрь 20, 2014, 11:42:08 »
snoitaleR
Так он тоже все даты выводит если в такой последовательности писать.

Оффлайн DarWiM [?]

  • Продвинутый
  • ***
  • Сообщений: 527
  • Репутация: 90
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: Сравнение прошедшей даты
« Ответ #3, Отправлен: Октябрь 20, 2014, 11:53:46 »
Nefakt
Может имеет смысл посмотреть в сторону библиотеки Date.au3?

Русское сообщество AutoIt

Re: Сравнение прошедшей даты
« Ответ #3 Отправлен: Октябрь 20, 2014, 11:53:46 »

Оффлайн ildar [?]

  • Осваивающий
  • **
  • Сообщений: 244
  • Репутация: 28
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: Сравнение прошедшей даты
« Ответ #4, Отправлен: Октябрь 20, 2014, 12:23:17 »
Вот хотелось бы что бы он сравнивал и настоящую и прошедшую дату с датами в .ini файле."Настоящую и прошедшую дату" чего?
Код: AutoIt [Выделить]
$nd = @YEAR & '.' & @MON & '.' & @MDAY

Это настоящая дата. Несколько раз перечитал так и не понял какой результат нужен.

Оффлайн Nefakt [?]

  • Новичок
  • *
  • Сообщений: 74

  • Автор темы
  • Репутация: 3
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Сравнение прошедшей даты
« Ответ #5, Отправлен: Октябрь 20, 2014, 12:39:08 »
Нужно что бы он сравнивал настоящую дату с датой в .ini и если в .ini есть настоящая дата или прошедшая то он должен вывести сообщения. А он выводит или только настоящую, или настоящую прошедшую и будущею.

Оффлайн ildar [?]

  • Осваивающий
  • **
  • Сообщений: 244
  • Репутация: 28
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: Сравнение прошедшей даты
« Ответ #6, Отправлен: Октябрь 20, 2014, 13:01:37 »
если в .ini есть настоящая дата или прошедшая Сообщение должно выходить если есть текущая дата в .ini, если текущей нет то смотрим наличие вчерашней даты, если вчерашняя дата имеется в .ini выводим сообщение. Я правильно понял?

Помечен как лучший ответ пользователем Nefakt Отправлен Октябрь 20, 2014, 13:59:44

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Сравнение прошедшей даты
« Ответ #7, Отправлен: Октябрь 20, 2014, 13:24:48 »
Nefakt,
Попробуйте сделать примерно так.
Код: AutoIt [Выделить]
Local $aDate, $iLast, $iToDay, $iTmp, $iNow = @YEAR & @MON & @MDAY, $iMin = $iNow

$aDate = IniReadSection(@ScriptDir & '\Date.ini', 'Date')
If @error Then Exit 13
For $i = 1 To $aDate[0][0]
    $iTmp = $iNow - StringReplace($aDate[$i][1], '.', '')
    Select
        Case $iTmp = 0
            $iToDay = $i
        Case $iTmp > 0
            If $iMin > $iTmp Then
                $iMin = $iTmp
                $iLast = $i
            EndIf
    EndSelect
Next
If $iToDay Then MsgBox(64, 'Info', 'ToDay: Key = ' & $aDate[$iToDay][0] & ', Value = ' & $aDate[$iToDay][1])
If $iLast Then MsgBox(64, 'Info', 'Last: Key = ' & $aDate[$iLast][0] & ', Value = ' & $aDate[$iLast][1])


Русское сообщество AutoIt

Re: Сравнение прошедшей даты
« Ответ #7 Отправлен: Октябрь 20, 2014, 13:24:48 »

Оффлайн Nefakt [?]

  • Новичок
  • *
  • Сообщений: 74

  • Автор темы
  • Репутация: 3
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Сравнение прошедшей даты
« Ответ #8, Отправлен: Октябрь 20, 2014, 13:59:37 »
madmasles
Спасибо работает. Только в .ini пришлось местами дату менять вместо
16.10.2014 писать 2014.10.16.

Русское сообщество AutoIt

Re: Сравнение прошедшей даты
« Ответ #8 Отправлен: Октябрь 20, 2014, 13:59:37 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
3913 Просмотров
Последний ответ Январь 29, 2012, 22:07:58
от CreatoR
2 Ответов
9603 Просмотров
Последний ответ Март 30, 2012, 02:50:25
от WSWR
4 Ответов
3256 Просмотров
Последний ответ Июль 25, 2012, 14:43:55
от ulan44
5 Ответов
2225 Просмотров
Последний ответ Июнь 10, 2014, 17:03:53
от Talany
7 Ответов
3219 Просмотров
Последний ответ Июнь 26, 2014, 23:28:17
от alex33
3 Ответов
1575 Просмотров
Последний ответ Сентябрь 23, 2014, 18:35:58
от fortages
10 Ответов
2329 Просмотров
Последний ответ Сентябрь 28, 2014, 16:49:45
от InnI
0 Ответов
802 Просмотров
Последний ответ Август 22, 2016, 19:48:31
от endpoints
7 Ответов
1419 Просмотров
Последний ответ Февраль 05, 2017, 12:08:34
от axsmak
16 Ответов
681 Просмотров
Последний ответ Апрель 18, 2018, 11:28:35
от Serega1383