📄 ysdatetime.h
字号:
#ifndef __YS_DATE_TIME_H__#define __YS_DATE_TIME_H__#include <time.h>#include "YsString.h"class YsDateTime;class YsDate{ public: YsDate() { m_year=m_month=m_day=0; } YsDate(int y,int m,int d) { m_year = y; m_month = m; m_day = d; } ~YsDate(){}; int year() {return m_year;}; int month() {return m_month;}; int day() {return m_day;}; YsDate& operator=(const YsDate &d) { memcpy(this, &d, sizeof(d));return *this; }; static YsDate currentDate() { YsDate d; struct tm *t; time_t now; time(&now); t = localtime(&now); d.m_year = 1900+t->tm_year; d.m_month=1+t->tm_mon; d.m_day=t->tm_mday; return d; } int m_year,m_month,m_day;};typedef YsDate QDate;class YsTime{ public: YsTime() { m_hour=m_minute=m_second=m_msecond=0; } YsTime(int h,int m,int s=0, int ms=0) { m_hour=h; m_minute=m; m_second=s; m_msecond=ms; } YsTime(time_t* pt) { tm *t; t = localtime(pt); m_hour=t->tm_hour; m_minute=t->tm_min; m_second=t->tm_sec; m_msecond=0; } ~YsTime(){}; int hour() {return m_hour;} int minute(){return m_minute;} int second(){return m_second;} int msec() {return m_msecond;} YsTime& operator=(const YsTime &t) { memcpy(this, &t, sizeof(t));return *this; }; static YsTime currentTime() { YsTime tt; struct tm *t; time_t now; time(&now); t = localtime(&now); tt.m_hour=t->tm_hour; tt.m_minute=t->tm_min; tt.m_second=t->tm_sec; tt.m_msecond=0; return tt; } int m_hour,m_minute,m_second,m_msecond;};typedef YsTime QTime;class YsDateTime{ public: YsDateTime(){}; YsDateTime(const YsDate &d) { m_date = d; } YsDateTime(const YsDate &d, const YsTime &t) { m_date = d; m_time = t; } YsDateTime(const YsDateTime &dt) { *this = dt; } YsDateTime& operator=(const YsDateTime &dt) { m_date = dt.m_date; m_time = dt.m_time;return *this; } YsDateTime addYears(int years) { YsDateTime dt=*this; dt.m_date.m_year += years; return dt; } YsDateTime addMonths(int month) { YsDateTime dt=*this; dt.m_date.m_month += month; return dt; } YsDateTime addDays(int days) { YsDateTime dt=*this; dt.m_date.m_day += days; return dt; } YsDateTime addHours(int hours) { YsDateTime dt=*this; dt.m_time.m_hour += hours; return dt; } YsDateTime addMinutes(int minutes) { YsDateTime dt=*this; dt.m_time.m_minute += minutes; return dt; } YsDateTime addSecs(int secs) { YsDateTime dt=*this; dt.m_time.m_second += secs; return dt; } YsString toString(YsString fmt)//yyyyMMddhhmmsszzz { YsString s=fmt; s.replace("yyyy",toStr("yyyy")); s.replace("MM",toStr("MM")); s.replace("dd",toStr("dd")); s.replace("hh",toStr("hh")); s.replace("mm",toStr("mm")); s.replace("ss",toStr("ss")); s.replace("zzz",toStr("zzz")); return s; } //static static YsDateTime currentDateTime() { YsDateTime dt; struct tm *t; time_t now; ::time(&now); t = localtime(&now); dt.m_date.m_year = 1900+t->tm_year; dt.m_date.m_month=1+t->tm_mon; dt.m_date.m_day=t->tm_mday; dt.m_time.m_hour=t->tm_hour; dt.m_time.m_minute=t->tm_min; dt.m_time.m_second=t->tm_sec; dt.m_time.m_msecond=0; return dt; } int secsTo(YsDateTime &other) { time_t t1,t2; tm tm1,tm2; tm1.tm_year = m_date.m_year; tm1.tm_mon = m_date.m_month; tm1.tm_mday = m_date.m_day; tm1.tm_hour = m_time.m_hour; tm1.tm_min = m_time.m_minute; tm1.tm_sec = m_time.m_second; tm1.tm_year = other.m_date.m_year; tm1.tm_mon = other.m_date.m_month; tm1.tm_mday = other.m_date.m_day; tm1.tm_hour = other.m_time.m_hour; tm1.tm_min = other.m_time.m_minute; tm1.tm_sec = other.m_time.m_second; t1 = mktime(&tm1); t2 = mktime(&tm2); int secs=(int)difftime(t2,t1);return secs; } bool operator<(YsDateTime &other) { return secsTo(other)>0; } bool operator>(YsDateTime &other) { return secsTo(other)<0; } bool operator<=(YsDateTime &other) { return secsTo(other)>=0; } bool operator>=(YsDateTime &other) { return secsTo(other)<=0; } bool operator==(YsDateTime &other) { return secsTo(other)==0; } bool operator!=(YsDateTime &other) { return secsTo(other)!=0; } YsDate date(){return m_date;} YsTime time(){return m_time;} YsDate m_date; YsTime m_time; private: YsString toStr(YsString fmt) { int len=2; int i=0; if(fmt == "yyyy") { len=4; i=m_date.m_year; } else if(fmt == "MM") i=m_date.m_month; else if(fmt == "dd") i=m_date.m_day; else if(fmt == "hh") i=m_time.m_hour; else if(fmt == "mm") i=m_time.m_minute; else if(fmt == "ss") i=m_time.m_second; else if(fmt == "zzz") { len=3; i=m_time.m_msecond; } fmt.sprintf("%d",i); while(fmt.length() < len) fmt = "0"+fmt; return fmt; }};typedef YsDateTime QDateTime;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -