Как получить вчерашнюю дату?

Здесь обсуждается всё, что касается макросов.
User avatar
daf
Posts: 27
Joined: Tue 18 Oct, 2005 07:37
Location: Украина, Донбасс
Contact:

Как получить вчерашнюю дату?

Post by daf »

Можно ли с помощью макроса получить вчерашнюю дату?

Сегодняшнюю я получаю так: $Date "%d%m0%y"

Для чего это мне нужно:
С появившейся возможностью раскрашивать файлы по дате хотелось бы "красить" вчерашние файлы определённым цветом. Сейчас я написал макропоследовательность (F9 р ф Enter б $Date "%d%m0%y" Enter Esc) по нажатию на заданную мной комбинацию в диалоговое окно проставляется текущая дата и сегодняшние файлы "красятся" нужным мне образом. Как сделать тоже самое, но чтобы дата была не сегодняшняя, а к примеру вчерашняя?
Или может кто подскажет более красивое решение данной проблемы. Потому как каждый раз при запуске far приходится нажимать эту комбинацию клавиш (ну или при первом запуске комбинацию, а потом сохранить настройки). В идеале конечно же было бы сразу править реестр при загрузке компа в "красящем" фильтре, но там формат даты мне пока мне непонятен.

Ветка в реестре примерно тут
HKEY_CURRENT_USER\Software\Far\Colors\Highlight\Group0
параметр
DateAfter"=hex:00,c8,15,8d,20,6f,c7,01 (это 26.03.2007 00:00:00)
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

см. функцию date()
User avatar
daf
Posts: 27
Joined: Tue 18 Oct, 2005 07:37
Location: Украина, Донбасс
Contact:

Post by daf »

Skirda wrote:см. функцию date()
А можно поподробнее как мне использовать эту функцию? Формат комманды $Date понятен. Но опыта написания макросов похоже у меня недостаточно. Покажите плз как мне написать искомое выражение и вставить не сегодняшнее (27.03.2007), а вчерашнее (26.03.2007) число в нужное поле ввода?
User avatar
HaRT
Moderator
Posts: 9600
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 114 times
Been thanked: 233 times

Re: Как получить вчерашнюю дату?

Post by HaRT »

daf wrote:Или может кто подскажет более красивое решение данной проблемы.
Такое предложение уже вносилось в теме Фильтры, но пока не реализовано.
User avatar
daf
Posts: 27
Joined: Tue 18 Oct, 2005 07:37
Location: Украина, Донбасс
Contact:

Post by daf »

HaRT
Это было бы идеальное решение. Я понимаю что однажды это будет сделано.
Но... хотелось бы сделать временное решение...
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

daf, начни вот с такого:

Code: Select all

%d=date("%d");
%m=date("%m");
%y=date("%Y");
А дальше все просто.

Code: Select all

%d=%d-1;
$if (%d < 1)
  %m=%m-1
  ....
$end
или подобным образом...
Идея в том, чтобы разложить дату на запчасти, вычисть, проверить, скорректировать и... собрать обратно.
User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко »

Skirda
Ага и при этом не забыть, что если сегодня 1-е число, то вчера может быть и 31 и 30 и 29 и 28 :P
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

Вадим Захаренко, ну а кто спорит? :-)
Хмм... может добавить что-нить типа dateadd() и datediff().
User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко »

Skirda
Тогда уже только одну - Add
если дату откатываем назад - то значение отрицательное и переключатель - что добавляем, дни, минуты, часы, месяцы, секунды, годы, недели
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

а разница дат не интересна?
User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко »

Skirda
Нужна, конечно
Просто я воспринял datediff как уменьшение даты, в отличии от прибавления
User avatar
JlblC
Posts: 46
Joined: Wed 19 Oct, 2005 16:52

Post by JlblC »

тогда уж 64-битовой тип данных наподобие TFileTime (номер 100-наносекундного интервала с 1 Января, 1601)
перевод в него и из него (типа функционала $Date)
ну и сложение и вычитание переменных этого типа данных
User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко »

JlblC
Чего уж там мелочиться - VBA for FAR Manager ;-)
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

Вадим Захаренко wrote:Чего уж там мелочиться - VBA for FAR Manager ;-)
Хмм... скоро и такое будет возможно (если кто "компилятор" напишет :))
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

JlblC wrote:тогда уж 64-битовой тип данных наподобие TFileTime
А вот это уже интересно. Что нить типа date2int и int2date :)
И... в panelitem добавить для propIndex индексы 15, 16 и 17, аналогичные 3, 4 и 5, но в представлении __int64.
Post Reply

Return to “Обсуждение макросов”