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

📄 cpptime.h

📁 Think in C++ 第二版源码
💻 H
字号:
//: 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -