laikas
Posted: 2011 Apr 06 12:54
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
o jeigu tik iš metai-mėnuo-diena ?newb wrote:Atimti is tokio stringo butu sunkoka. Geriau naudot systime.
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}
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; } } } } }}