Unix Time’dan gerçek tarih zaman elde etme

Tek tek ellerimle yazdım, kaybolmasın diye buraya yazıyorum, sonra düzenler fonksiyonel hale getiririm.

#include <iostream>

using namespace std;

int main()
{
    unsigned long int sayi=0;

      //cout << "Sayiyi giriniz : ";          
      //cin >> sayi;
      sayi=1388534400; //1/1/2014 00:00:00
      sayi=635699526;
    unsigned long int kac_saniye=0, kac_dakika=0,kac_saat=0;

///////////////////////////////////////////////////////////////////////////////////////////    
    /*
    //1 dakika=60sn olduğu için dakikadan artan saniyeyi sayi mod 60 ile bulduk
    //peki saatten artan dakikayı bulmak için ne yapacağız
    şöyle:
    1 saat 60 dakika yani 60*60=3600 saniye
    demekki sayi mod 3600 yaparsak artan dakikayı buluruz,
    daha doğrusu saniyeyi buluruz, 60 ile çarparsak dakikayı bulmuş oluruz

    günden artan saati bulmak için
    1gün 60*60*24 saniyedir. sayi mod (60*60*24) yaparsak artan saati buluruz    
    daha doğrusu saniyeyi buluruz, saate çevirmek için 60*60 sayısıyla çarparız

    */
    kac_saniye=sayi%60;
    kac_dakika=(sayi%3600)/60; //3600 = 60*60
    kac_saat=(sayi%86400)/(60*60);// 86400, 60*60*24 sayısına eşittir

    cout << "Saat: " << kac_saat << ":" << kac_dakika << ":" <<  kac_saniye  <<endl;

 ///////////////////////////////////////////////////////////////////////////////////////////

    int i=0;
    unsigned int tarih_yil=0;
    unsigned int tarih_ay=0,tarih_gun=0,kalan_gun=0;

//////YIL HESAPLANIYOR/////////////////////////////////////////////////////////////////////////////////
    //365 gün 6 saati yanlış hesaplıuyormuşum doğrusu 31536000 olacakmış yani 6 saatlik farkı koymuyorlarmış

    i=2;
    while(sayi>=31536000) //31536000=1 yil, yani 1 yildan az zaman kalana kadar verilen saniyeyi azalt
    {        
        if(i%4==0)
        {
            tarih_yil++;
            sayi=sayi-31622400; //şubatın 29 çektiği yıllarda 366 gün çıkartıyoruz
            //subat_bollugu++;    //eğer arada geçen artık yılları saymak istiyorsan aktif et
        }
        else
        {
            tarih_yil++;
            sayi-=31536000; //diğer yıllar 365 gün çıkartıyoruzs
        }        
        i++;
    }        
///////////////////////////////////////////////////////////////////////////////////////////////////////

    kalan_gun=sayi/86400;

    if(kalan_gun>=31) { tarih_ay++;  kalan_gun-=31;} //ocak
    if(kalan_gun>=28) { tarih_ay++;  kalan_gun-=28;} //şubat //duruma göre kontrol edilecek        
    if(kalan_gun>=31) { tarih_ay++;  kalan_gun-=31;} //mart
    if(kalan_gun>=30) { tarih_ay++;  kalan_gun-=30;} //nisan
    if(kalan_gun>=31) { tarih_ay++;  kalan_gun-=31;} //mayıs
    if(kalan_gun>=30) { tarih_ay++;  kalan_gun-=30;} //haziran
    if(kalan_gun>=31) { tarih_ay++;  kalan_gun-=31;} //temmuz
    if(kalan_gun>=31) { tarih_ay++;  kalan_gun-=31;} //ağustos
    if(kalan_gun>=30) { tarih_ay++;  kalan_gun-=30;} //eylül
    if(kalan_gun>=31) { tarih_ay++;  kalan_gun-=31;} //ekim
    if(kalan_gun>=30) { tarih_ay++;  kalan_gun-=30;} //kasım
    if(kalan_gun>=31) { tarih_ay++;  kalan_gun-=31;} //aralık

    kalan_gun++; //ay ve günler 1 den başladığı için 1 artırıyoruz
    tarih_ay++;

    cout << kalan_gun << "/" << tarih_ay << "/" << tarih_yil+1970 << endl;

    return 0;
}

/*
not:
    online çevir:
    http://www.onlineconversion.com/unix_time.htm
    http://www.aelius.com/njh/unixtime/?ud=631152000

*/

 

Bir Cevap Yazın