Здравтвуйте, о Гуру! =)столкнулся с проблемой...думаю вы сожете помочь..
задача - вывести в ISO вчерашнюю дату (т.е. 20070411)
можно решить путём $day-1 , но как быть с началом нового месяца? получим (20070500)что посоветуете?
спасибо.
>Здравтвуйте, о Гуру! =)
>
>столкнулся с проблемой...думаю вы сожете помочь..
>
>задача - вывести в ISO вчерашнюю дату (т.е. 20070411)
>можно решить путём $day-1 , но как быть с началом нового месяца?
>получим (20070500)
>
>что посоветуете?
>
>спасибо.
прошу прощения за спам
>>Здравтвуйте, о Гуру! =)
>>
>>столкнулся с проблемой...думаю вы сожете помочь..
>>
>>задача - вывести в ISO вчерашнюю дату (т.е. 20070411)
>>можно решить путём $day-1 , но как быть с началом нового месяца?
>>получим (20070500)
>>
>>что посоветуете?
>>
>>спасибо.Кажный день в 23:59:50
===> file НАКАНУНЕ = поместить в ./DIR/day_before/
#!/bin/sh
date +%H > hour
date +%M > min
date +%S > sec
date +%A > weekf
date +%a > weeks
date +%j > yearday
date +%m > month
date +%d > daymonth
date +%w > dayweek
date +%Y > year
date +%y > year_00
date +%b > monthl
<===
Кажный день в 00:00:10
===> file СЕГОДНЯ = поместить в ./DIR/day_this/
!/bin/shdate +%H > hour
date +%M > min
date +%S > sec
date +%A > weekf
date +%a > weeks
date +%j > yearday
date +%m > month
date +%d > daymonth
date +%w > dayweek
date +%Y > year
date +%y > year_00
date +%b > monthl
<===
... имея эти 2 файла (сег&накан) лепить можно всякоdo like this, but better...
date -d 'now -1 month'
у меня работает /Debian Sarge
>date -d 'now -1 month'
>у меня работает /Debian Sarge
ну тогда уж
date -d 'now -1 day'
ведь вроде дату то вчерашнюю надо а не месячной давности :)А так можно поставить модуль:
Time-modules
и реализовать простенький алгоритм.
вычтя сначала день, определив предыдущий месяц, еслимесяц 0 то еще и год вычесть.
а зная год, и месяц можно определить последний день месяца фунцкцией из
DaysInMonth.pmdays_in
ну а потом все это объединить.А вообще вчерашнюю дату надо узнавать вчера!!!:)
>можно решить путём $day-1 , но как быть с началом нового месяца? получим (20070500)
вот для этого я и написал date -d 'now -1 month' ---- ^^^^^^^^^^^^ -- человек и про месяц спросил.
ну так вот --- получил прошлый месяц -- отформатировал (date -d 'now -1 month' +%Y%m), ну и добавил к строчке "01" итого:
echo $(date -d 'now -1 month' +%Y%m)01
это про бревно и глаз....
>date -d 'now -1 month'
>у меня работает /Debian Sarge=)
проблема немного глубже... - запускаться всё это будет под win. (ActivePerl), так, что хотелось бы решить проблему как раз на Perle
>>date -d 'now -1 month'
>>у меня работает /Debian Sarge
>
>=)
>проблема немного глубже... - запускаться всё это будет под win. (ActivePerl), так,
>что хотелось бы решить проблему как раз на Perle
Так почему бы не сделать time()-24*60*60 ?
>>>date -d 'now -1 month'
>>>у меня работает /Debian Sarge
>>
>>=)
>>проблема немного глубже... - запускаться всё это будет под win. (ActivePerl), так,
>>что хотелось бы решить проблему как раз на Perle
>
>
>Так почему бы не сделать time()-24*60*60 ?
большое спасибо за идею.сделал так:
use Time::Format qw(%time %strftime %manip);
$yesterday = $time{'yyyymmdd', time-24*60*60};
print $yesterday;
Можно ещё:my $ydate = localtime();
sleep(60*60*24);
print $ydate;
>Можно ещё:
>
>my $ydate = localtime();
>sleep(60*60*24);
>print $ydate;
Гениально.
>Можно ещё:
>
>my $ydate = localtime();
>sleep(60*60*24);
>print $ydate;
=)
>Можно ещё:
>
>my $ydate = localtime();
>sleep(60*60*24);
>print $ydate;Ж%-) -- сразу чувствуется разносторонность мышления.
>Здравтвуйте, о Гуру! =)
>
>столкнулся с проблемой...думаю вы сожете помочь..
>
>задача - вывести в ISO вчерашнюю дату (т.е. 20070411)
>можно решить путём $day-1 , но как быть с началом нового месяца?
>получим (20070500)
>
>что посоветуете?
>
>спасибо.
my ($mday, $mon, $year) = (localtime(time - 24 * 60 * 60))[3, 4, 5];
my $yesterday = sprintf '%04d%02d%02d', $year + 1900, $mon + 1, $mday;