The OpenNET Project / Index page

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

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

 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
 
14.11.2008 , Автор: Брызгалов Константин
Ключи: date, bash / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, pavlinux (ok), 00:08, 14/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Гы!

    #cal

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

     
     
  • 2.2, pavlinux (ok), 00:11, 14/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Давайте другую - Определение даты перехода на летнее/зимнее время - чем короче, тем КРУЧЕ  (можно на ASM_e) :)

     
     
  • 3.3, ymkin (ok), 10:59, 14/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    ..В некоторых странах, например в Бразилии, нет фиксированной даты начала летнего времени. Она определяется каждый год, за несколько месяцев до начала лета..
    [http://www.opennet.me/base/sys/date_and_time.txt.html]
     
     
  • 4.4, pavlinux (ok), 21:37, 15/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Дык, у нас тоже не фиксирована!
     
     
  • 5.9, Serg11 (??), 13:48, 18/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    осенью знать будет так:
    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

     
     
  • 6.12, pavlinux (ok), 00:13, 21/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Это не интересно, функцию давай!!!
    Уравнения Гаусса для определения Пасхи знаете, вот что-то подобное...

     
     
  • 7.13, Serg11 (??), 15:16, 29/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Во, что я нашел ;-)
    http://www.canto.ru/calendar/easter.php?year1=2000&year2=3010&style=new
    http://megalib.com/books/27/html/algoritm/data/data1.htm
     

  • 1.5, Дима (??), 14:47, 17/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    cal | xargs | sed "s/ /\n/g" | tail -n 1
     
     
  • 2.6, Andrey Mitrofanov (?), 15:39, 17/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >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
    $ _

     
     
  • 3.7, Дима (??), 18:27, 17/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Да, в линухе к одному и тому же результату можно дойти сотней разных путей. :)
     
     
  • 4.8, Andrey Mitrofanov (?), 19:39, 17/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Да, в линухе

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

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

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

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

     

  • 1.11, phpcoder (??), 19:14, 19/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    '==' это башизм. Не рекомендую.
     
  • 1.14, Aivanzipper (?), 14:57, 05/07/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    # uname -r
    7.2-RELEASE

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

     
     
  • 2.15, Aivanzipper (?), 15:15, 05/07/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Только кавычки левые должны быть, какое-о автоформатирование сработало...
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




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

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