栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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() < 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号