Многим при создании сообщений хочется видеть что то типа "Доброе утро уважаемый Иван Петрович", когда на дворе 2 часа пополудню и "Добрый вечер Иван Петрович", когда 8 часов вечера. На этой странице мы именно этому и будет обучать нашего любимого Бата.
Итак, время представлено в виде строк, т.е. "8:00", "9:00", "17:00", "5:00".
Сравнивая время, Бат на самом деле сравнивает его строковое представление, а принцип сравнения строк элементарен – сравнение идет посимвольно.
Чем это грозит? А смотрите сами:
- (1) Сравним 17:00 и 20:00
- Первый символ с строке "17:00", это символ "1"
Первый символ с строке "20:00", это символ "2"
1<2? Ага. Соответственно, 17:00<20:00
- (2) Сравним теперь 18:00 и 10:00
-
- Первый символ с строке "18:00", это символ "1"
Первый символ с строке "10:00", это символ "1"
1<1? Нет. 1>1? Нет. 1=1? Да. Переходим ко второму символу
Второй символ с строке "18:00", это символ "8"
Второй символ с строке "10:00", это символ "0"
8<0? Нет. 8=0? Нет. 8>0? Да. Соответственно, 18:00>10:00
В вашем случае ошибки не происходит, все дело в этом самом принципе
сравнения. При установленном у вас формате представления даты, у чисел
меньше десяти в начале отсутствует лидирующий ноль. И что в итоге?
- (1) Сравним 8:00 и 12:00
- Первый символ с строке "8:00", это символ "8"
Первый символ с строке "12:00", это символ "1"
8>1? Ага. Соответственно, 8:00>12:00
А как правильно? А вот так:
- (2) Сравним 08:00 и 12:00
- Первый символ с строке "08:00", это символ "0"
Первый символ с строке "12:00", это символ "1"
0<1? Ага. Соответственно, 08:00<12:00
Чтобы этого избежать, можно воспользоваться средствами последних версий Мышки, которые позволяют явно указывать формат времени и даты.
Предлагаю вот такой вот шаблон:
Good %-
%IF:"%TIME='hh:mm:ss'">"06:00:00":"%IF:'%TIME=""hh:mm:ss""'<'11:59:59':'morning':''"%-
%IF:"%TIME='hh:mm:ss'">"11:59:59":"%IF:'%TIME=""hh:mm:ss""'<'17:59:59':'afternoon':''"%-
%IF:"%TIME='hh:mm:ss'">"17:59:59":"%IF:'%TIME=""hh:mm:ss""'<'23:59:59':'evening':''"%-
%IF:"%TIME='hh:mm:ss'">"00:00:00":"%IF:'%TIME=""hh:mm:ss""'<'05:59:59':'night':''"%-
%IF:"%TIME='hh:mm:ss'"="00:00:00":"night":""%-
A.P.$lasH