URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 45089
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Определение количества дней в месяце в bash скрипте"

Отправлено auto_tips , 14-Ноя-08 00:08 
В функции решается задача как определить количество дней в месяце:
Необязательные параметры [месяц [год]]

days_in_month(){
  [ "$#" == "2" ] && date -d "$1/01/$2 +1month -1day" +%d
  [ "$#" == "1" ] && days_in_month $1 `date +%Y`
  [ "$#" == "0" ] && days_in_month `date +'%m %Y'`
}

Или, - односторчник - если нужно узнать количество дней в текущем месяце
   date -d  "`date +'%m/01'`+1month -1day" +%d

URL:
Обсуждается: https://www.opennet.ru/tips/info/1829.shtml


Содержание

Сообщения в этом обсуждении
"Определение количества дней в месяце в bash скрипте"
Отправлено pavlinux , 14-Ноя-08 00:08 
Гы!

#cal

последнее число и есть дней в месяце :)
  


"Определение количества дней в месяце в bash скрипте"
Отправлено pavlinux , 14-Ноя-08 00:11 
Давайте другую - Определение даты перехода на летнее/зимнее время - чем короче, тем КРУЧЕ  (можно на ASM_e) :)


"Определение количества дней в месяце в bash скрипте"
Отправлено ymkin , 14-Ноя-08 10:59 
..В некоторых странах, например в Бразилии, нет фиксированной даты начала летнего времени. Она определяется каждый год, за несколько месяцев до начала лета..
[https://www.opennet.ru/base/sys/date_and_time.txt.html]

"Определение количества дней в месяце в bash скрипте"
Отправлено pavlinux , 15-Ноя-08 21:37 
Дык, у нас тоже не фиксирована!

"переход на летнее/зимнее время"
Отправлено Serg11 , 18-Ноя-08 13:48 
осенью знать будет так:
cal -m 10 2008 | perl -ne '/^\d*(\s\d*){6}\n$/;$&=~/\d\d\n/;print $&' | tail -1
а весной
cal -m 3 2008 | perl -ne '/^\d*(\s\d*){6}\n$/;$&=~/\d\d\n/;print $&' | tail -1


"переход на летнее/зимнее время"
Отправлено pavlinux , 21-Ноя-08 00:13 
Это не интересно, функцию давай!!!
Уравнения Гаусса для определения Пасхи знаете, вот что-то подобное...


"переход на летнее/зимнее время"
Отправлено Serg11 , 29-Ноя-08 15:16 
Во, что я нашел ;-)
http://www.canto.ru/calendar/easter.php?year1=2000&year2=301...
http://megalib.com/books/27/html/algoritm/data/data1.htm

"Определение количества дней в месяце в bash скрипте"
Отправлено Дима , 17-Ноя-08 14:47 
cal | xargs | sed "s/ /\n/g" | tail -n 1

"Определение количества дней в месяце в bash скрипте"
Отправлено Andrey Mitrofanov , 17-Ноя-08 15:39 
>cal | xargs |

Богато! :)

> sed "s/ /\n/g"

Здесь обычно %) используют tr " " "\n"

> | tail -n 1

$ cal|xargs|awk '{print $NF}'
30
$ cal|awk -v RS="\f" '{print $NF}'
30
$ # ;-)
$ _

...:))))))

$ x() { date -d "${1:-`date +%Y`}/${2:-`date +%m`}/01 +1month -1day" +%d; }
$ x
30
$ x 2007
30
$ x 2007 1
31
$ x 2007 2
28
$ x "" 2
29
$ _


"Определение количества дней в месяце в bash скрипте"
Отправлено Дима , 17-Ноя-08 18:27 
Да, в линухе к одному и тому же результату можно дойти сотней разных путей. :)

"tim toady"
Отправлено Andrey Mitrofanov , 17-Ноя-08 19:39 
>Да, в линухе

Вообще-то это--vvv ~~девиз Perl-а: google.ru/search?q=timtowtdi

>к одному и тому же результату можно дойти сотней разных путей. :)

...?q="More+Than+One+Way"+unix

А я не 1001-ый способ решения конкретной задачи показывал, а... ну, скажем, 101-ый способ применения shell-инструментария. Возможно, кому-то интересно было. ...кроме :D меня. Хотя, может, оно и стало менее читаемым и менее удобным для поддержки.


"Определение количества дней в месяце в bash скрипте"
Отправлено phpcoder , 19-Ноя-08 19:14 
'==' это башизм. Не рекомендую.

"Определение количества дней в месяце в bash скрипте"
Отправлено Aivanzipper , 05-Июл-10 14:57 
# uname -r
7.2-RELEASE

date -v1d -v`date -v +1m +%m`m -v-1d +%d


"Определение количества дней в месяце в bash скрипте"
Отправлено Aivanzipper , 05-Июл-10 15:15 
Только кавычки левые должны быть, какое-о автоформатирование сработало...