Počítání unixového data

Popravdě už ani nevím jak tohle přesně vzniklo, ale předpokládám, že to je výsledek nějakého úkolu v programování v C. Je to asi jen pro inspiraci, protože když jsem to teď namátkově proletěl, tak si myslím, že kdy bude přestupnej rok 29. února, tak program řekne, že je 1. března.

#include 

#define sekundVRoce 31556926
#define odRoku 1970
#define timeZone 2

using namespace std;

int main() {
	int	buf,i,size,SS,MM,HH,months,years,prestRoku,mesic,tempMes;
	int cas = 1222944882;

	buf = cas;

	cout 365) { //odecteme cele roky
    years++;
    buf -= 365;
	}
	
	//zbytek roku doprojedeme
	mesic = 1;
	tempMes = prestRoku*12;
	tempMes++; //neni to od 0.0. ale od 1.1.
	while(buf>31) {
    switch(mesic) {
      case 1:
        buf -= 31;
      	mesic++;
        tempMes++;
      break;
      case 2:
        buf -= 28;
        mesic++;
        tempMes++;
      break;
      case 3:
        buf -= 31;
        mesic++;
        tempMes++;
      break;
      case 4:
        buf -= 30;
        mesic++;
        tempMes++;
      break;
      case 5:
        buf -= 31;
        mesic++;
        tempMes++;
      break;
      case 6:
        buf -= 30;
        mesic++;
        tempMes++;
      break;
      case 7:
        buf -= 31;
        mesic++;
        tempMes++;
      break;
      case 8:
        buf -= 31;
        mesic++;
        tempMes++;
      break;
      case 9:
        buf -= 30;
        mesic++;
        tempMes++;
      break;
      case 10:
        buf -= 31;
        mesic++;
        tempMes++;
      break;
      case 11:
        buf -= 30;
        mesic++;
        tempMes++;
      break;
      case 12:
        buf -= 31;
        mesic = 1;
        tempMes++;
      break;
    }
  }
  
  //aby nam neunikl ani den 
	if( mesic == 2 && buf > 28 ) {
    buf -= 28;
    tempMes++;
	}
	
  if((mesic == 4 || mesic == 6 || mesic == 9 || mesic == 11) && buf > 30) {
    buf -= 30;
    tempMes++;
	}
	
	months = tempMes % 12;
	years += tempMes / 12;

	cout <<  "Prave je rok " << years+odRoku << " datum " << buf << "." << months << ". a cas " << HH+timeZone << ":" << MM << ":" << SS << endl;	
	cout << "---------------------------------" << endl;

	return 0;
}

Tags: