📄 vdatetime.cpp
字号:
/*************************************************************************** vdatetime.cpp - description ------------------- begin : 2005-01-05 copyright : (C) 2005 by LiuZhong email : easeliu@vip.sina.com.cn ***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/#include "vdatetime.h"//--------------------------------------------------------------------------------------------------DateTime::DateTime(){ m_DT = time(NULL);}DateTime::DateTime(const time_t DT){ m_DT = DT;}DateTime::DateTime(const char* DT){ struct tm tt; int Len = strlen(DT); long dt=0; string st; switch(Len){ case 6: dt = atol(DT); m_DT = (dt/10000*60+(dt/100%100))*60+(dt%100); break; case 8: if(DT[2]==':'&&DT[5]==':'){ dt = (((DT[0]-'0')*10L+(DT[1]-'0'))*60L+((DT[3]-'0')*10L+(DT[4]-'0')))*60+(DT[6]-'0')*10L+(DT[7]-'0'); m_DT = dt; } else{ st = DT; st += "000000"; strptime(st.c_str(),"%Y%m%d%H%M%S",&tt); m_DT = mktime(&tt); } break; case 10: st = DT; st += " 00:00:00"; strptime(st.c_str(),"%Y-%m-%d %H:%M:%S",&tt); m_DT = mktime(&tt); break; case 14: strptime(DT,"%Y%m%d%H%M%S",&tt); m_DT = mktime(&tt); break; case 15: if(DT[8]=='-') strptime(DT,"%Y%m%d-%H%M%S",&tt); else strptime(DT,"%Y%m%d %H%M%S",&tt); m_DT = mktime(&tt); break; case 19: strptime(DT,"%Y-%m-%d %H:%M:%S",&tt); m_DT = mktime(&tt); break; }}DateTime::DateTime(const struct tm* DT){ m_DT = mktime((struct tm*)DT);}DateTime::DateTime(long Year,long Month,long Day){ struct tm t; t.tm_year = Year-1900; t.tm_mon = Month - 1; t.tm_mday = Day; t.tm_hour = 0; t.tm_min = 0; t.tm_sec = 0; m_DT = mktime(&t);}DateTime::DateTime(long Hour,long Minute,long Second,long MSecond){ m_DT = (Hour*60+Minute)*60+Second;}DateTime::DateTime(long Year,long Month,long Day,long Hour,long Minute,long Second){ struct tm t; t.tm_year = Year-1900; t.tm_mon = Month - 1; t.tm_mday = Day; t.tm_hour = Hour; t.tm_min = Minute; t.tm_sec = Second; m_DT = mktime(&t);}time_t DateTime::AddDays(long Days){ m_DT += (Days*24L*60*60); return m_DT;}time_t DateTime::AddSeconds(long Seconds){ if(m_DT<86400) m_DT = ((m_DT+Seconds)%86400); else m_DT += Seconds; return m_DT;}time_t DateTime::DT(){ return m_DT;}long DateTime::Year(){ if(m_DT<86400){ return 0; } else{ struct tm tt; localtime_r(&m_DT,&tt); return tt.tm_year+1900; }}long DateTime::Month(){ if(m_DT<86400){ return 0; } else{ struct tm tt; localtime_r(&m_DT,&tt); return tt.tm_mon+1; }}long DateTime::Day(){ if(m_DT<86400){ return 0; } else{ struct tm tt; localtime_r(&m_DT,&tt); return tt.tm_mday; }}long DateTime::Hour(){ if(m_DT<86400){ return m_DT/3600; } else{ struct tm tt; localtime_r(&m_DT,&tt); return tt.tm_hour; }}long DateTime::Minute(){ if(m_DT<86400){ return (m_DT%3600)/60; } else{ struct tm tt; localtime_r(&m_DT,&tt); return tt.tm_min; }}long DateTime::Second(){ if(m_DT<86400){ return m_DT%60; } else{ struct tm tt; localtime_r(&m_DT,&tt); return tt.tm_sec; }}long DateTime::WeekDay(){ if(m_DT<86400){ return 0; } else{ struct tm tt; localtime_r(&m_DT,&tt); return tt.tm_wday; } }long DateTime::YearDay(){ if(m_DT<86400){ return 0; } else{ struct tm tt; localtime_r(&m_DT,&tt); return tt.tm_yday; }}long DateTime::Date(){ string dstr=Format("%Y%m%d"); return atol(dstr.c_str());}long DateTime::Time(){ if(m_DT<86400){ return (m_DT/3600*10000+(m_DT%3600)/60*100+(m_DT%60)); } else{ string tstr=Format("%H%M%S"); return atol(tstr.c_str()); } }string DateTime::StdDateTime(){ return Format("%Y-%m-%d %H:%M:%S");}string DateTime::StdDate(){ return Format("%Y-%m-%d");}string DateTime::StdTime(){ char tstr[10]; if(m_DT<86400){ sprintf(tstr,"%02d:%02d:%02d", m_DT/3600,(m_DT%3600)/60,(m_DT%60)); return tstr; } else{ return Format("%H:%M:%S"); }}string DateTime::EurDateTime(){ return Format("%d.%m.%Y %H.%M.%S");}string DateTime::EurDate(){ return Format("%d.%m.%Y");}string DateTime::EurTime(){ char tstr[10]; if(m_DT<86400){ sprintf(tstr,"%02d.%02d.%02d", m_DT/3600,(m_DT%3600)/60,(m_DT%60)); return tstr; } else{ return Format("%H.%M.%S"); }}string DateTime::TWDateTime(){ return Format("%Y/%m/%d %H:%M:%S");}string DateTime::TWDate(){ return Format("%Y/%m/%d");}string DateTime::TWTime(){ char tstr[10]; if(m_DT<86400){ sprintf(tstr,"%02d:%02d:%02d", m_DT/3600,(m_DT%3600)/60,(m_DT%60)); return tstr; } else{ return Format("%H:%M:%S"); }}string DateTime::WestDateTime(){ return Format("%m/%d/%Y %H:%M:%S");}string DateTime::WestDate(){ return Format("%m/%d/%Y");}string DateTime::WestTime(){ char tstr[10]; if(m_DT<86400){ sprintf(tstr,"%02d:%02d:%02d", m_DT/3600,(m_DT%3600)/60,(m_DT%60)); return tstr; } else{ return Format("%H:%M:%S"); }}string DateTime::LongDateTime(){ return Format("%Y%m%d-%H%M%S");}string DateTime::LongDate(){ return Format("%Y%m%d");}string DateTime::ShortDateTime(){ return Format("%y%m%d-%H%M%S");}string DateTime::ShortDate(){ return Format("%y%m%d");}string DateTime::ShortTime(){ char tstr[10]; if(m_DT<86400){ sprintf(tstr,"%02d%02d%02d", m_DT/3600,(m_DT%3600)/60,(m_DT%60)); return tstr; } else{ return Format("%H%M%S"); }}string DateTime::Format(string Fmt){ char tmstr[64]; struct tm tt; localtime_r(&m_DT,&tt); strftime(tmstr,64,Fmt.c_str(),&tt); return tmstr;}//--------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -