The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"вчерашняя дата."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"вчерашняя дата."  
Сообщение от bman on 12-Апр-07, 15:55 
Здравтвуйте, о Гуру! =)

столкнулся с проблемой...думаю вы сожете помочь..

задача - вывести в ISO вчерашнюю дату (т.е. 20070411)
можно решить путём $day-1 , но как быть с началом нового месяца? получим (20070500)

что посоветуете?

спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "вчерашняя дата."  
Сообщение от pavel_simple (ok) on 12-Апр-07, 16:05 
>Здравтвуйте, о Гуру! =)
>
>столкнулся с проблемой...думаю вы сожете помочь..
>
>задача - вывести в ISO вчерашнюю дату (т.е. 20070411)
>можно решить путём $day-1 , но как быть с началом нового месяца?
>получим (20070500)
>
>что посоветуете?
>
>спасибо.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "вчерашняя дата."  
Сообщение от pavel_simple (ok) on 12-Апр-07, 16:07 
прошу прощения за спам


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "вчерашняя дата."  
Сообщение от vrh email on 27-Апр-07, 11:33 
>>Здравтвуйте, о Гуру! =)
>>
>>столкнулся с проблемой...думаю вы сожете помочь..
>>
>>задача - вывести в 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/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
<===
... имея эти 2 файла (сег&накан) лепить можно всяко

do like this, but better...


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "вчерашняя дата."  
Сообщение от pavel_simple (ok) on 12-Апр-07, 16:06 
date -d 'now -1 month'
у меня работает /Debian Sarge
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "вчерашняя дата."  
Сообщение от NuINu (??) on 12-Апр-07, 16:22 
>date -d 'now -1 month'
>у меня работает /Debian Sarge
ну тогда уж
date -d 'now -1 day'
ведь вроде дату то вчерашнюю надо а не месячной давности :)

А так можно поставить модуль:
Time-modules
и реализовать простенький алгоритм.
вычтя сначала день, определив предыдущий месяц, еслимесяц 0 то еще и год вычесть.
а зная год, и месяц можно определить последний день месяца фунцкцией из
DaysInMonth.pm

days_in
ну а потом все это объединить.

А вообще вчерашнюю дату надо узнавать вчера!!!:)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "вчерашняя дата."  
Сообщение от pavel_simple (ok) on 12-Апр-07, 16:27 
>можно решить путём $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
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "вчерашняя дата."  
Сообщение от pavel_simple (ok) on 12-Апр-07, 16:28 
это про бревно и глаз....


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "вчерашняя дата."  
Сообщение от bman on 12-Апр-07, 17:45 
>date -d 'now -1 month'
>у меня работает /Debian Sarge

=)
проблема немного глубже... - запускаться всё это будет под win. (ActivePerl), так, что хотелось бы решить проблему как раз на Perle

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "вчерашняя дата."  
Сообщение от madskull (??) on 12-Апр-07, 17:56 
>>date -d 'now -1 month'
>>у меня работает /Debian Sarge
>
>=)
>проблема немного глубже... - запускаться всё это будет под win. (ActivePerl), так,
>что хотелось бы решить проблему как раз на Perle


Так почему бы не сделать time()-24*60*60  ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "вчерашняя дата."  
Сообщение от bman on 13-Апр-07, 11:29 
>>>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;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "вчерашняя дата."  
Сообщение от alexvs email(??) on 18-Апр-07, 16:38 
Можно ещё:

my $ydate = localtime();
sleep(60*60*24);
print $ydate;


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "вчерашняя дата."  
Сообщение от idle (ok) on 18-Апр-07, 17:55 
>Можно ещё:
>
>my $ydate = localtime();
>sleep(60*60*24);
>print $ydate;
Гениально.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "вчерашняя дата."  
Сообщение от bingo2 on 18-Апр-07, 21:20 
>Можно ещё:
>
>my $ydate = localtime();
>sleep(60*60*24);
>print $ydate;


=)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "вчерашняя дата."  
Сообщение от pavel_simple (ok) on 19-Апр-07, 06:32 
>Можно ещё:
>
>my $ydate = localtime();
>sleep(60*60*24);
>print $ydate;

Ж%-) -- сразу чувствуется разносторонность мышления.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "вчерашняя дата."  
Сообщение от FarID (??) on 20-Апр-07, 15:13 
>Здравтвуйте, о Гуру! =)
>
>столкнулся с проблемой...думаю вы сожете помочь..
>
>задача - вывести в 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;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру