C++简单迅速的多功能时间类(有毫秒微秒和对齐)

C++简单迅速的多功能时间类(有毫秒微秒和对齐),第1张

C++简单迅速的多功能时间类(有毫秒微秒和对齐)

开门见山:

#include 
#include 
#include 
#pragma once
#define Auto 0
using namespace std::chrono;
using namespace std;

// Offline Chrono/Meter Class(C++) .
typedef class final {
protected:
time_t gt; tm* gtm; int i;

public:
  inline string Align(string Time,unsigned Length);
  inline tm* Tm(void);
  
  // Functions For Display     用于显示的函数 / string
  inline const string Gets_Year(void);
  inline const string Gets_Mon (void);
  inline const string Gets_Day (void);
  inline const string Gets_Hour(void);
  inline const string Gets_Min (void);
  inline const string Gets_Sec (void);
  inline const string Gets_Yday(void);
  inline const string Gets_Msec(void);
  inline const string Gets_Usec(void);

  // Functions For Calculation 用于计算的函数 / int
  inline int Get_Year (void);
  inline int Get_Mon  (void);
  inline int Get_Day  (void);
  inline int Get_Hour (void);
  inline int Get_Min  (void);
  inline int Get_Sec  (void);
  inline int Get_Yday (void); // 今天是今年的第几天
  inline int Get_Week (void);
  inline int Get_Msec (void);
  inline int Get_Usec (void);
  inline int Get_Stamp(void); // Time Stamp 时间戳
  
  // Functions For Logical     用于逻辑的函数 / bool
  inline bool Is_LeapYear(int Year = Auto); // 闰年? 
}GMeter;


  inline string GMeter::Align(string Time,unsigned Length) { return string(Length - Time.length(),'0').append(Time); }
  inline tm*    GMeter::Tm   (void) { time(>); return localtime(>); }
  
  inline const string GMeter::Gets_Year(void) { return Align(to_string(Get_Year()),4); }
  inline const string GMeter::Gets_Mon (void) { return Align(to_string(Get_Mon ()),2); }
  inline const string GMeter::Gets_Day (void) { return Align(to_string(Get_Day ()),2); }
  inline const string GMeter::Gets_Hour(void) { return Align(to_string(Get_Hour()),2); }
  inline const string GMeter::Gets_Min (void) { return Align(to_string(Get_Min ()),2); }
  inline const string GMeter::Gets_Sec (void) { return Align(to_string(Get_Sec ()),2); }
  inline const string GMeter::Gets_Yday(void) { return Align(to_string(Get_Yday()),3); }
  inline const string GMeter::Gets_Msec(void) { return Align(to_string(Get_Msec()),3); }
  inline const string GMeter::Gets_Usec(void) { return Align(to_string(Get_Usec()),3); }

  inline int GMeter::Get_Year (void) { return Tm()->tm_year + 1900; }
  inline int GMeter::Get_Mon  (void) { return Tm()->tm_mon + 1;     }
  inline int GMeter::Get_Day  (void) { return Tm()->tm_mday;        }
  inline int GMeter::Get_Hour (void) { return Tm()->tm_hour;        }
  inline int GMeter::Get_Min  (void) { return Tm()->tm_min;         }
  inline int GMeter::Get_Sec  (void) { return Tm()->tm_sec;         }
  inline int GMeter::Get_Yday (void) { return Tm()->tm_yday + 1;    }
  inline int GMeter::Get_Week (void) { i = Tm()->tm_wday; if(!i)return 7; return i; }
  inline int GMeter::Get_Msec (void) { return duration_cast(system_clock::now().time_since_epoch()).count() / 1000 % 1000; }
  inline int GMeter::Get_Usec (void) { return duration_cast(system_clock::now().time_since_epoch()).count() % 1000;        }
  inline int GMeter::Get_Stamp(void) { return time(NULL); }
  
  inline bool GMeter::Is_LeapYear(int Year)
  { if(!Year)Year = Get_Year(); if(Year>0)i=0; else { i=1; Year*=-1; } return((Year % 4 == i && Year % 100 != 0) || (Year % 400 == i)); }

Align函数的作用是方便对齐,如 1 -> 01
这样2022.1.1就会变为2022.01.01,方便对齐。

只是为了方便自己编写而写的类,很多不足的地方,希望可以指出。

测试代码:

int main(int argc, char **argv) {
  GMeter Meter;
  cout << Meter.Gets_Year() << Meter.Gets_Mon() << Meter.Gets_Day() << ","
       << Meter.Gets_Hour() << Meter.Gets_Min() << Meter.Gets_Sec() << ";"
       << Meter.Gets_Msec() << ";" << Meter.Gets_Usec() < 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5692138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存