⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpptime.h

📁 s/w handheld terminal ( based on Cygnal 8051f230)
💻 H
字号:
#include "sys\types.h"     // time(), localtime(), asctime(), difftime(), ...
#include "time.h"

#ifndef CPPTIME_H
#define CPPTIME_H

//******************************* Deklaracije << BEGIN >> *******************************
//      - kalse
class   KTime;
class   KClock;
//                  - konstante
const int   DUZINA_FORMAT = 100;
const int   TEKUCA_GOD = 98989898; // ovo nije godina vec 'signal' da treba uzeti tekucu godinu
const long  BROJ_CPU_TAKTOVA_U_SEKUNDI = CLOCKS_PER_SEC;
//******************************** Deklaracije << END >> ********************************

class KTime {

    time_t t;
    tm local;
    char asciiRep[26];
    char formatStr[ DUZINA_FORMAT ];
    bool lflag, aflag;
    bool bNulaDatum; // ovaj fleg se setuje kada se godina, mesec i datum postavljaju na 0
    
    void updateLocal( bool bForce = false );
    void updateAscii( bool bForce = false );

public:
    // Konstruktori
    KTime( void );
    KTime( time_t vreme );
    KTime( struct tm* timeptr );

    void mark();
    void mark( time_t vreme );

    const char* ascii();

    // Vraca string koji predstavlja vreme u zadatom formatu
    const char* FormatStr( const char *format );

    // Racuna vremensku razliku u odnosu na 'dt'
    int delta(KTime* dt) const;

    // Vraca strukturu tm ( razdvojeni podaci o vremenu i datumu : sekunde, minuti, ... )
    tm GetLocal( void );

    // Vraca strukturu time_t
    time_t GetTimeT( void );

    // Postavlja vreme ( cas, minut, sekunde ); u slucaju neuspeha vraca false.
    // Ponekad 'cas' nije moguce setovati na zeljenu vrednost ( verovatno zbog 
    // DST - daylight saving time ); u tom slucaju, moguce je 'forsirati' postavljanje
    // casa na racun pomeranja godine ( ako godina u datom kontekstu nije bitna ).
    bool PostaviVreme( int nCas, int nMinut, int nSekunda = 0, bool bForsirajCas = false );

    // Postavlja datum ( dan, mesec, godina ); u slucaju neuspeha vraca false.
    bool PostaviDatum( int nDan, int nMesec, int nGodina = TEKUCA_GOD );

    // Vraca godinu pocetka tekuceg veka ( npr. 1900 ili 2000 )
    int PocetakTekucegVeka( void );

    // Vraca tekucu godinu ( npr. 2002 )
    int TekucaGodina( void );

    // Pauzira izvrsenje dati broj sekundi
    static void PauzaSek( double nSekundi );

    // Vraca true ako se radi o 'nula' datumu ( mesec i dan setovani na 0 pomocu PostaviDatum ).
    // Koristi se kod rucnog formatiranja ispisa ( zato sto funkcija FormatStr ne moze da 
    // ispise datum 00.00.0000 )
    bool NulaDatum( void );
};

class KClock {
    clock_t CPUclock;

public:
    // Konstruktori
    KClock( void );

    void mark();

    // Racuna vremensku razliku ( u sekundama ) u odnosu na 'CPUclk'
    double delta( KClock* CPUclk ) const;
};

#endif // CPPTIME_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -