cpptime.h

来自「Think in C++ 第二版源码」· C头文件 代码 · 共 82 行

H
82
字号
//: C09:Cpptime.h

// From Thinking in C++, 2nd Edition

// Available at http://www.BruceEckel.com

// (c) Bruce Eckel 1999

// Copyright notice in Copyright.txt

// A simple time class

#ifndef CPPTIME_H

#define CPPTIME_H

#include <ctime>

#include <cstring>



class Time {

  std::time_t t;

  std::tm local;

  char asciiRep[26];

  unsigned char lflag, aflag;

  void updateLocal() {

    if(!lflag) {

      local = *std::localtime(&t);

      lflag++;

    }

  }

  void updateAscii() {

    if(!aflag) {

      updateLocal();

      std::strcpy(asciiRep,std::asctime(&local));

      aflag++;

    }

  }

public:

  Time() { mark(); }

  void mark() {

    lflag = aflag = 0;

    std::time(&t);

  }

  const char* ascii() {

    updateAscii();

    return asciiRep;

  }

  // Difference in seconds:

  int delta(Time* dt) const {

    return std::difftime(t, dt->t);

  }

  int daylightSavings() {

    updateLocal();

    return local.tm_isdst;

  }

  int dayOfYear() { // Since January 1

    updateLocal();

    return local.tm_yday;

  }

  int dayOfWeek() { // Since Sunday

    updateLocal();

    return local.tm_wday;

  }

  int since1900() { // Years since 1900

    updateLocal();

    return local.tm_year;

  }

  int month() { // Since January

    updateLocal();

    return local.tm_mon;

  }

  int dayOfMonth() {

    updateLocal();

    return local.tm_mday;

  }

  int hour() { // Since midnight, 24-hour clock

    updateLocal();

    return local.tm_hour;

  }

  int minute() {

    updateLocal();

    return local.tm_min;

  }

  int second() {

    updateLocal();

    return local.tm_sec;

  }

};

#endif // CPPTIME_H ///:~

⌨️ 快捷键说明

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