Portál AbcLinuxu, 7. května 2025 21:57

Dotaz: Bash datum a odecteni mesice

finc avatar 31.5.2012 12:54 finc | skóre: 8 | blog: Finc | Kolín
Bash datum a odecteni mesice
Přečteno: 517×
Odpovědět | Admin
Zdravim mistni odborniky :)

Mam jeden problem s pocitanim datumu. Jedna se o vypocet, kdy potrebuji znat aktualni datum - 1 mesic.

Dnes bohuzel doslo k tomu, ze k aktualnimu datu: 31.5.2012 mi dany vypocet vraci 1.5.2012!
echo $(date +%Y-%m-%d)
2012-05-31

echo $(date +%Y-%m-%d --date '-1 month')
2012-05-01
Osobne prilis nechapu jak k tomuto muze dochazet :(

Dekuji vsem za napady, jak toto vyresit.
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.5.2012 13:06 chrono
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
Odpovědět | | Sbalit | Link | Blokovat | Admin
Apríl nemá 31 dní, takže to vráti najbližší správny dátum, čo je práve 1. máj.
finc avatar 31.5.2012 13:07 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
Dnes je ale 31.5.2012 coz neni April ale May
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
31.5.2012 13:11 chrono
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
To áno, ale 31. 5. -1 mesiac je 31. 4. a taký dátum neexistuje. :)

Nemôže to vrátiť 30. 4., pretože čo by potom malo vrátiť 30. 5. - 1 mesiac?
finc avatar 31.5.2012 13:17 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takze jsem to vyresil nasledovne:
echo $(date -d "$(date +%Y-%m-01) 1 month ago" +%Y-%m-%d)
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
31.5.2012 13:21 chrono
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
Možno by bolo bezpečnejšie nepoužiť prvý (a ani 28.) deň v mesiaci, pretože netuším, ako sa to bude správať, ak by práve na taký dátum pripadol posun času.
finc avatar 31.5.2012 13:26 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
Dal jsem 15 den v mesici. Snad nekoho nenapadne zmenit mesice na 10 dni :)))

Jinak puvodne jsem resil jen masku: YYYY-MM tudiz me zajimaly roky a mesice, bohuzel datovy typ na yyyymm neni.

Pokud by mel nekdo lepsi reseni problemu (YYYY-MM - 1 month) rad se priucim, dekuji.
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
31.5.2012 15:42 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
Co poslední měsíc v roce Mayského kalendáře? :-)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
finc avatar 31.5.2012 13:32 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jeste doplnim napriklad, jak k tomuto pristupuje MySQL :))

current_date() = 31.5.2012
SELECT DATE_ADD(current_date(), INTERVAL -1 month ) FROM dual
A vysledkem je: 30.4.2012

Asi kazde prostredi bude miti vlastni zpusob, jak se s timto problemem poprat :)
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
Josef Kufner avatar 9.6.2012 10:51 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Bash datum a odecteni mesice
Odpovědět | | Sbalit | Link | Blokovat | Admin
Funkce strtotime v PHP umí i takové hezké věci jako "last day of last month".
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.