Page 1 of 1

laikas

Posted: 2011 Apr 06 12:54
by aurimasko
Kaip gavus tikslų laiką ( Metai-Mėnuo-Diena Valanda:Minutė:Sekundė) atimti iš jo tris dienas. Pvz. jeigu yra 2011-05-06 13:50:50, tai atėmus turėtų gautis 2011-05-03 13:50:50

Re: laikas

Posted: 2011 Apr 06 13:30
by newb
Atimti is tokio stringo butu sunkoka. Geriau naudot systime.

Re: laikas

Posted: 2011 Apr 06 13:33
by aurimasko
newb wrote:Atimti is tokio stringo butu sunkoka. Geriau naudot systime.
o jeigu tik iš metai-mėnuo-diena ?

Re: laikas

Posted: 2011 Apr 06 14:43
by hleV

Code: Select all

//new time[20];//get_time("%Y-%m-%d %H:%M:%S", time, charsmax(time));new time[] = "2011-05-06 13:50:50";new day = str_to_num(time[8]) - 3; if (day >= 1){                if (day >= 10)                format(time[8], charsmax(time), "%d%s", day, time[10])        else                format(time[8], charsmax(time), "0%d%s", day, time[10]);}else{        // Grizom i praeita menesi,        // o as nezinau kiek jis turi dienu,        // tad niekuo negaliu padet}

Re: laikas

Posted: 2011 Apr 06 18:36
by aaarnas
Parašiau kalendoriaus stock'ą. Gal tiks. Tik nesuderinamas su keliamaisiais metais.

Code: Select all

new metai=2011, menuo=5, diena=6count_date(metai, menuo, diena, 3, 0) // Metai | Menuo | Diena | Kiek dienų atimti/pridėti | 1 - dienas pridėti / 0 - dienas atimti// metai=2011 menuo=5 diena=3 stock count_date(&y, &m, &d, days, up=1) {        if(up) { // Prie datos pridedam dienas        while(days > 0) {                switch(m) {                case 1,3, 5, 7, 8, 10: {                    if(d<31) { d++; days--; }                    else { m++; d=0; }                }                case 2: {                    if(d<28) { d++; days--; }                    else { m++; d=0; }                }                case 4, 6, 9, 11: {                    if(d<30) { d++; days--; }                    else { m++; d=0; }                }                case 12: {                    if(d<31) { d++; days--; }                    else { y++; m=1; d=0; }                }            }        }    }    else { // Nuo datos atimam dienas        while(days > 0) {                        switch(m) {                case 1, 3, 5, 7, 8, 10: {                    if(d>1) { d--; days--; }                    else {                        switch(m) {                            case 1: { y--; m=12; d=32; }                            case 3: { m-- ; d=29; }                            case 8, 10: { m-- ; d=32; }                            default: { m--; d=31; }                        }                    }                }                case 2: {                    if(d>1) { d--; days--; }                    else { m--; d=32; }                }                case 4, 6, 9, 11: {                    if(d>1) { d--; days--; }                    else { m--; d=32; }                }                case 12: {                    if(d>1) { d--; days--; }                    else { m=11; d=31; }                }            }        }    }}