abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    včera 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 8
    včera 18:33 | IT novinky

    Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.

    Ladislav Hagara | Komentářů: 1
    včera 17:11 | Nová verze

    Richard Biener oznámil vydání verze 14.1 (14.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 14. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Komunita

    Free Software Foundation zveřejnila ocenění Free Software Awards za rok 2023. Vybráni byli Bruno Haible za dlouhodobé příspěvky a správu knihovny Gnulib, nováček Nick Logozzo za front-end Parabolic pro yt-dlp a tým Mission logiciels libres francouzského státu za nasazování svobodného softwaru do praxe.

    Fluttershy, yay! | Komentářů: 0
    včera 13:11 | IT novinky

    Před 10 lety Microsoft dokončil akvizici divize mobilních telefonů společnosti Nokia a pod značkou Microsoft Mobile ji zanedlouho pohřbil.

    Ladislav Hagara | Komentářů: 2
    6.5. 21:33 | Komunita

    Fedora 40 release party v Praze proběhne v pátek 17. května od 18:30 v prostorách společnosti Etnetera Core na adrese Jankovcova 1037/49, Praha 7. Součástí bude program kratších přednášek o novinkách ve Fedoře.

    Ladislav Hagara | Komentářů: 5
    6.5. 21:11 | IT novinky

    Stack Overflow se dohodl s OpenAI o zpřístupnění obsahu Stack Overflow pro vylepšení OpenAI AI modelů.

    Ladislav Hagara | Komentářů: 1
    6.5. 17:55 | Nová verze

    AlmaLinux byl vydán v nové stabilní verzi 9.4 (Mastodon, 𝕏). S kódovým názvem Seafoam Ocelot. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    6.5. 17:11 | IT novinky

    Před 50 lety, 5. května 1974 v žurnálu IEEE Transactions on Communications, Vint Cerf a Bob Kahn popsali protokol TCP (pdf).

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (64%)
     (7%)
     (13%)
     (16%)
    Celkem 138 hlasů
     Komentářů: 9, poslední včera 22:07
    Rozcestník

    Dotaz: porovnání datumů

    28.5.2007 10:49 yorik
    porovnání datumů
    Přečteno: 544×
    Ahoj, potřeboval bych scriptík, který dostane 2 časy a datum a pakliže ten druhý čas je menší než první, tak vrátí datum +1d. Awk bohužel s datumy a časy zacházet neumí, tak jsem se pokusil podle nápověd a diskuzí něco stvořit v perlu (který neumím), ale nedaří se mi ani zadat datum.

    perl -e '@cas = localtime(?);‘

    Prosím o radu, alespoň co místo otazníku( „YYYY-MM-DD“ - nefunguje). Případně i další rady uvítám. Předem velice děkuji. Jirka

    Odpovědi

    28.5.2007 10:56 stak | skóre: 4
    Rozbalit Rozbalit vše Re: porovnání datumů
    To datum bude vždycky stejné, nebo se bude lišit?

    DN
    28.5.2007 11:05 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: porovnání datumů
    elegantnejšie riešenie (v perl-i):
    use Class::Date;
    
    my $time1 = Class::Date::date ('2007-05-28 00:00:00');
    my $time2 = Class::Date::date ('2007-05-28 24:00:00');
    
    $time1 += '1D'
      if $time1 < $time2;
    
    # my $now = Class::Date::now;
    # my $now2 = Class::Date::date (time);
    # my $now3 = Class::Date::date (`date +%s`);
    
    pre viac info by to chcelo viac popisu problému.
    28.5.2007 11:09 stak | skóre: 4
    Rozbalit Rozbalit vše Re: porovnání datumů
    Je asi hodně způsobů, já bych to řešil takto.

    use strict; use warnings; use Date::Simple; use Time::Simple;

    my ( $cas1, $cas2, $datum ) = ( $ARGV[0], $ARGV[1], $ARGV[2] );

    my $ocas1 = Time::Simple->new($cas1);

    if ( $ocas1 < $cas2 ) { my $odatum = Date::Simple->new($datum); $odatum = $odatum->next; print "$odatum\n"; }
    28.5.2007 12:16 yorik
    Rozbalit Rozbalit vše Re: porovnání datumů
    Napsal jsem ty scripty do souboru a spouštím to jako „perl názevsouboru“, ale bohužel to nechodí. Hlásí to:

    1 script:

    syntax error in file pokus.perl at line 1, next 2 tokens "use Class" Execution of pokus.perl aborted due to compilation errors.

    2 script:

    syntax error in file pokus1.perl at line 1, next 2 tokens "use strict" syntax error in file pokus1.perl at line 7, next 2 tokens "my $odatum " syntax error in file pokus1.perl at line 7, next 2 tokens "->" Execution of pokus1.perl aborted due to compilation errors.

    Prosím o radu, co dělám špatně. Předem velice děkuji.

    Podrobnější popis problému: V jedné databázi jsou uloženy časy a jedno datum ( např. datum, čas1, čas2) a já je potřebuji přenést do jiné databáze, kde je ale uloženo datum1, čas1, datum2, čas2. Z té první databáze tedy selectem zjistím hodnoty a pomocí awk vytvářím sql dotaz, který zazálohuje původní řádky a udělá update na nové hodnoty. Ale protože nemám v první databázi datum2, potřebuji ho zjistit - proto to porovnání časů. Tak jsem chtěl z AWK zavolat script, který mi ho na základě časů „dopočítá“ (příčte 1D, jestliže čas1 > čas2).
    28.5.2007 12:27 stak | skóre: 4
    Rozbalit Rozbalit vše Re: porovnání datumů
    Problém bude asi v tom:

    Pokuď pouštím skript v Linuxu je nutno jako první řádek definovat interpret, který mi zpracuje daný skript.

    #!/usr/bin/perl -w

    Popřípadě změnit cestu.

    Dále bude potřeba stáhnout a doinstalovat moduly z http://www.cpan.org

    http://search.cpan.org/CPAN/authors/id/Y/YV/YVES/Date-Simple-3.02.tar.gz http://search.cpan.org/CPAN/authors/id/L/LG/LGODDARD/Time-Simple-0.052.tar.gz

    Mělo by stačit stáhnout, rozbalit, přesunout se do daného adresáře a napsat:

    perl makefile.pl make make install

    Nakonec spustit skript s argumenty:

    test.pl "08:00:00" "09:00:00" "2007-05-25"

    Mělo by to fungovat.

    Obdobné řešení bude i u první varianty, akorát se stáhne jiný modul.

    DN
    28.5.2007 13:34 yorik
    Rozbalit Rozbalit vše Re: porovnání datumů
    Jo, dík, už to hází jinou a logičtější hlášku. Nemůže najít Simple.pm - problém je, že na tenhle server se nic nainstalovat nedá - je klíčový a dokud funguje, tak ho nikdo "dráždit" nebude.
    28.5.2007 14:35 stak | skóre: 4
    Rozbalit Rozbalit vše Re: porovnání datumů
    No instalovat by se ani nic nemuselo, stačí se podívat, kde to hledá ten modul a pak tam uložit jenom soubor simple.pm.

    DN
    28.5.2007 15:05 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: porovnání datumů
    export PERL5LIB=/home/user/lib/perl5/
    
    28.5.2007 13:18 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: porovnání datumů
    hmm, tie chyby sa mi nezdajú, nepozná "use strict" ???

    k problému: aritmetiku nechať na databázu: (hint)

    select datum, cas1, cas2, datum+1D, datum || cas1, datum || cas2;
    
    posledné dva stĺpce by mali generovať dátum a čas ako jeden reťazec, reťazcovo provnávateľný (iso formát). A potom v podmienke vybrať buď datum alebo datum+1D
    28.5.2007 13:31 yorik
    Rozbalit Rozbalit vše Re: porovnání datumů
    Jo, taky mě už napadlo nechat si to datum vypsat selectem, ale přece jenom vypočítat se mi ho zdálo lepší ... a taky jsem se mohl něco přiučit. Ale i tohle je varianta a možná na ní bohužel i dojde.
    28.5.2007 14:18 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: porovnání datumů
    aritmetika času je trochu náročnejšia :-)
    iný variant je prekonvertovať čas na epoch, potom +1D je +86400 :-)
    28.5.2007 13:04 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: porovnání datumů
    Jsem řešil něco podobného při vytváření souboru aby když konec hodin bude menší tj zasahuje do druhého dne se přičetl den aby konec seděl.

    Viz:
    fprintf(fw,"BEGIN:VCALENDAR\r\n");
    fprintf(fw,"VERSION:2.0\r\n");
    fprintf(fw, "BEGIN:VEVENT\r\n");
    fprintf(fw, "SUMMARY:%s\r\n", linka);
    //fprintf(fw, "DESCRIPTION:%s\r\n", linka);
    fprintf(fw, "CATEGORIES:Prace\r\n");
    fprintf(fw, "DTSTART:%04d%02d%02dT%02d%02d00\r\n", rok, mesic, den, zacatek_hodiny, zacatek_minuty);
    if( zacatek_hodiny < konec_hodiny) fprintf(fw, "DTEND:%04d%02d%02dT%02d%02d00\r\n", rok, mesic, den, konec_hodiny, konec_minuty);
    else fprintf(fw, "DTEND:%04d%02d%02dT%02d%02d00\r\n", rok, mesic, den+1, konec_hodiny, konec_minuty);
    fprintf(fw, "AALARM:%04d%02d%02dT%02d%02d00\r\n", rok, mesic, den, zacatek_hodiny-1, zacatek_minuty);
    fprintf(fw, "END:VEVENT\r\n");
    fprintf(fw,"END:VCALENDAR\r\n");
    
    28.5.2007 13:14 yorik
    Rozbalit Rozbalit vše Re: porovnání datumů
    Nezkoušel jsem to, ale mám dotaz, co to udělá např. 31.12. když přičteš den? „Přechroustá“ si to přechody měsíců samo? Dík Jirka
    28.5.2007 13:35 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: porovnání datumů
    Ha to mě nenapadlo grrrr to je vyjímečná situace.

    U těch mých dat je pouze jedna položka co přechází přes půlnoc a ještě se opakuje jednou za 48 dní takže to mě uteklo.

    Už to půjdu opravit. Díky za nakopnutí.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.