Что нового

Сравнение прошедшей даты

Nefakt

Новичок
Сообщения
74
Репутация
3
Всем привет.
У меня есть код который сравнивает дату компьютера с датой в .ini файле и если совпадает то программа выводит сообщение.
Сейчас мне нужно что бы скрипт сравнивал не только совпадающую дату но и мог сравнивать дату компьютера с прошедшей датой.
Например сегодня 20.10.2014 если написать эту дату в файл он выдаст сообщение, но если вписать 19.10.2014 он уже не видит. Вот хотелось бы что бы он сравнивал и настоящую и прошедшую дату с датами в .ini файле.
Вот код который сейчас
Код:
$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

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

На это
Код:
If $nd >= $rs[$i][1] Then

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

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

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Nefakt
Попробуйте сохранять даты в обратной последовательности, так будет проще сравнивать строки:
Код:
1=2014.10.20
2=2014.10.19
3=2014.10.21
4=2014.10.18
5=2014.09.30
Код:
$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

Nefakt

Новичок
Сообщения
74
Репутация
3
snoitaleR
Так он тоже все даты выводит если в такой последовательности писать.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Nefakt
Может имеет смысл посмотреть в сторону библиотеки Date.au3?
 

ildar

Осваивающий
Сообщения
252
Репутация
29
Код:
Вот хотелось бы что бы он сравнивал и настоящую и прошедшую дату с датами в .ini файле.
"Настоящую и прошедшую дату" чего?
Код:
$nd = @YEAR & '.' & @MON & '.' & @MDAY
Это настоящая дата. Несколько раз перечитал так и не понял какой результат нужен.
 
Автор
Nefakt

Nefakt

Новичок
Сообщения
74
Репутация
3
Нужно что бы он сравнивал настоящую дату с датой в .ini и если в .ini есть настоящая дата или прошедшая то он должен вывести сообщения. А он выводит или только настоящую, или настоящую прошедшую и будущею.
 

ildar

Осваивающий
Сообщения
252
Репутация
29
Код:
если в .ini есть настоящая дата или прошедшая
Сообщение должно выходить если есть текущая дата в .ini, если текущей нет то смотрим наличие вчерашней даты, если вчерашняя дата имеется в .ini выводим сообщение. Я правильно понял?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Nefakt,
Попробуйте сделать примерно так.
Код:
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])
 
Автор
Nefakt

Nefakt

Новичок
Сообщения
74
Репутация
3
madmasles
Спасибо работает. Только в .ini пришлось местами дату менять вместо
16.10.2014 писать 2014.10.16.
 
Верх