亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? datetime.cpp

?? 一個時間處理的類
?? CPP
字號:
// Date.cpp: implementation of the CDateTime class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DateTime.h"
#include <time.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const char *dayname[] = {"Sunday","Monday","Tuesday","Wednesday",
	   "Thursday","Friday","Saturday"} ;

const char *mname[] = {"January","February","March","April","May",
	   "June","July","August","September","October","November","December"};

static int MonDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
CDateTime::CDateTime(bool bLocal)
{
   m_bLocal = bLocal;
   Today(bLocal);
}

CDateTime::~CDateTime()
{
    
}
CDateTime::CDateTime(int iYear,int iMonth,int iDay,int iHour,int iMinute,int iSecond,bool bLocal)//默認產生UTC時間
{
    m_iYear = iYear;
	m_iMonth = iMonth;
	m_iDay = iDay;
    m_iHour = iHour;
	m_iMinute = iMinute;
	m_iSecond = iSecond;

	m_bLocal = bLocal;

	m_lTime = ToLong();
	ToTime(m_lTime);

}

void CDateTime::Today(bool bLocal)//得到當前日期,默認產生UTC時間
{
	time_t t;
	t= time(NULL);
    struct tm *today;
	m_bLocal = bLocal;
    if(bLocal)
	{
		today = localtime( &t ); /* Convert to local time. */
		
	}
	else //UTC時間
	{
		today = gmtime( &t );

	}
	m_iYear = today->tm_year + 1900;
	m_iMonth = today->tm_mon + 1;
	m_iDay = today->tm_mday;
	m_iWeek = today->tm_wday;
	m_iHour = today->tm_hour;
	m_iMinute = today->tm_min;
	m_iSecond = today->tm_sec;
	m_lTime = ToLong();
	
}
CDateTime& CDateTime::AddYears(int iValue)
{
	if(iValue == 0)
	{
		return *this; 
	}
    m_iYear += iValue;
	m_lTime = ToLong();
	return *this;
}
CDateTime& CDateTime::AddMonths(int iValue)
{
	if(iValue == 0)
	{
		return *this; 
	}
    iValue += m_iMonth;                    // Since month is of type unsigned char
                                        // I choose to use nCount as the main
    while (iValue < 1)                  // counter - TML
    {
        iValue += 12;
        m_iYear--;
    }

    while (iValue > 12)
    {
        iValue -= 12;
        m_iYear++;
    }

    m_iMonth = (unsigned char) iValue;
	m_lTime = ToLong();	
	return *this;
}
CDateTime& CDateTime::AddDays(int iValue)
{
	if(iValue == 0)
	{
		return *this; 
	}	
    m_lTime += iValue;
	ToTime(m_lTime);
	return *this;
}
CDateTime& CDateTime::AddWeeks(int iValue)
{
	if(iValue == 0)
	{
		return *this; 
	}
	m_lTime += 7 * iValue;
	ToTime(m_lTime);
	return *this;
}
CDateTime& CDateTime::AddHours(int iValue)
{
	if(iValue == 0)
	{
		return *this; 
	}
	iValue += m_iHour;
	while(iValue < 0 )
	{
        m_lTime --;
		iValue += 24;
	}
	while (iValue > 23)
	{
		m_lTime ++;
		iValue -= 24;
	}
	m_iHour = iValue;
	ToTime(m_lTime);
	return *this;
}
CDateTime& CDateTime::AddMinutes(int iValue)
{
	if(iValue == 0)
	{
		return *this; 
	}
	int iHour = 0;
	iValue += m_iMinute;
	while(iValue < 0 )
	{
        iHour --;
		iValue += 60;
	}
	while (iValue > 59)
	{
		iHour ++;
		iValue -= 60;
	}
	m_iMinute = iValue;
	AddHours(iHour);
	return *this;

}
CDateTime& CDateTime::AddSeconds(int iValue)
{
	if(iValue == 0)
	{
		return *this; 
	}
	int iMinute = 0;
	iValue += m_iSecond;
	while(iValue < 0 )
	{
        iMinute --;
		iValue += 60;
	}
	while (iValue > 59)
	{
		iMinute ++;
		iValue -= 60;
	}
	m_iSecond = iValue;
	AddMinutes(iMinute);
	return *this;
}

int CDateTime::Compare(CDateTime& OtherDate)
{
	if(m_lTime > OtherDate.m_lTime  )
	{
         return 1; //大于
	}
	if(m_lTime < OtherDate.m_lTime)
	{
		return -1; //小于
	}
    return 0;
}
std::string CDateTime::ToString(std::string sFormat)
{
	if(m_lTime <= 0)
	{
        return "";
	}
    _FORMAT pos[6];
    int i,j;
	int iCurPos = 0;
	char sData[5];
	std::string sTime;

    pos[0].local = sFormat.find("YYYY");
    pos[0].Key = "YYYY"; 
	pos[1].local = sFormat.find("MM");

	pos[1].Key = "MM"; 

	
    pos[2].local = sFormat.find("DD");

	pos[2].Key = "DD"; 

	
    pos[3].local = sFormat.find("HH");

	pos[3].Key = "HH"; 

	
    pos[4].local = sFormat.find("MI");
	pos[4].Key = "MI"; 

	
    pos[5].local = sFormat.find("SS");
	pos[5].Key = "SS"; 



	for(i = 0; i < 6 ; i++)
	{
		if(pos[i].local == -1)
		{
			return "";
		}
		for(j = i + 1; j < 6 ; j ++)
		{

			if(pos[i].local > pos[j].local && pos[j].local!= -1)
			{
                _FORMAT temp;
				temp  = pos[i];
				pos[i] = pos[j];
				pos[j] = temp;
			}
		}
        
	}
	
	for(i = 0; i < 6; i++)
	{
		
        sTime += sFormat.substr(iCurPos,pos[i].local - iCurPos);
	    if(pos[i].Key == "YYYY")
		{
			memset(sData,0,5);
			sprintf(sData,"%04d",m_iYear);
            sTime += sData;
		}
	    if(pos[i].Key == "MM")
		{
			memset(sData,0,5);
			sprintf(sData,"%02d",m_iMonth);
            sTime += sData;
		}
	    if(pos[i].Key == "DD")
		{
			memset(sData,0,5);
			sprintf(sData,"%02d",m_iDay);
            sTime += sData;
		}
	    if(pos[i].Key == "HH")
		{
			memset(sData,0,5);
			sprintf(sData,"%02d",m_iHour);
            sTime += sData;
		}
	    if(pos[i].Key == "MI")
		{
			memset(sData,0,5);
			sprintf(sData,"%02d",m_iMinute);
            sTime += sData;
		}
	    if(pos[i].Key == "SS")
		{
			memset(sData,0,5);
			sprintf(sData,"%02d",m_iSecond);
            sTime += sData;
		}
		iCurPos = pos[i].local + pos[i].Key.length() ;
	}
	
	return sTime;
	
}

CDateTime CDateTime::StringToTime(std::string sDate,std::string sFormat)
{
    _FORMAT pos[6];
    int i,j;
	int iCurPos = 0;
	char sData[5];
	std::string sTime;
    m_iYear = 0;
    m_iMonth = 0;
	m_iDay = 0;
	m_iHour = 0;
	m_iMinute = 0;
	m_iSecond = 0;
	m_iWeek = 0;
	m_lTime = 0;

    pos[0].local = sFormat.find("YYYY");
	pos[0].Key = "YYYY"; 

	pos[1].local = sFormat.find("MM");
	pos[1].Key = "MM"; 

    pos[2].local = sFormat.find("DD");
	pos[2].Key = "DD"; 

    pos[3].local = sFormat.find("HH");
	pos[3].Key = "HH"; 

    pos[4].local = sFormat.find("MI");
	pos[4].Key = "MI"; 

    pos[5].local = sFormat.find("SS");
	pos[5].Key = "SS"; 


	for(i = 0; i < 6 ; i++)
	{
		if(pos[i].local == -1)
		{
			return *this;
		}
		for(j = i + 1; j < 6 ; j ++)
		{
			if(pos[i].local > pos[j].local)
			{
                _FORMAT temp;
				temp  = pos[i];
				pos[i] = pos[j];
				pos[j] = temp;
			}
		}
        
	}
	
	for(i = 0; i < 6; i++)
	{
		
       	memset(sData,0,5);
		if(pos[i].local != -1)
		{
			
			if(sDate.length() < pos[i].local + pos[i].Key.length())
			{
				return *this;
			}
			strcpy(sData,sDate.substr(pos[i].local,pos[i].Key.length()).c_str()); 
		}
		else
		{
			continue;
		}
		
	    if(pos[i].Key == "YYYY")
		{
           
			m_iYear = atoi(sData);

		}
	    if(pos[i].Key == "MM")
		{
			m_iMonth = atoi(sData);
		}
	    if(pos[i].Key == "DD")
		{
			m_iDay = atoi(sData);
		}
	    if(pos[i].Key == "HH")
		{
			m_iHour = atoi(sData);
			
		}
	    if(pos[i].Key == "MI")
		{
			m_iMinute = atoi(sData);

		}
	    if(pos[i].Key == "SS")
		{
			m_iMinute = atoi(sData);
		}
		
	}
    m_lTime = ToLong();
	return *this;
}
CDateTime& CDateTime::UTCToLocalTime()
{
    if(!m_bLocal && m_lTime > 0)
	{
		 long sSeconds;
		 CDateTime local(true);
		 CDateTime UTC(false);
         sSeconds = local- UTC;
		 AddSeconds(sSeconds);
         m_bLocal = true;
	}
	return *this;
}
CDateTime& CDateTime::LocalToUTCTime()
{
    if(m_bLocal && m_lTime > 0)
	{
		 long sSeconds;
		 CDateTime local(true);
		 CDateTime UTC(false);
         sSeconds = UTC- local;
		 AddSeconds(sSeconds);
         m_bLocal = false;
	}
	return *this;
}

long   CDateTime::operator-(CDateTime& DT)
{
	long lSeconds = 0;
	lSeconds = (m_lTime - DT.m_lTime) * 24 * 60 * 60;
    lSeconds += m_iHour * 60 * 60 + m_iMinute * 60 + m_iSecond - 
		(DT.m_iHour * 60 * 60 + DT.m_iMinute * 60 + DT.m_iSecond);
	return lSeconds;
    
}
long CDateTime::ToLong()
{
	int a,b=0;

	int work_month=m_iMonth, work_day=m_iDay, work_year=m_iYear;

	// correct for negative year

	if (work_year < 0)
		work_year++;

	if (work_month <= 2)
	{
		work_year--;
		work_month +=12;
	}

	// deal with Gregorian calendar

	if (work_year*10000. + work_month*100. + work_day >= 15821015.)
	{
		a = (int)(work_year/100.);
		b = 2 - a + a/4;
	}

	m_lTime  = (long) (365.25*work_year) +
			 (long) (30.6001 * (work_month+1))  +  work_day + 1720994L + b ;
	GetWeekFromLongTime();
	return m_lTime;
}

void CDateTime::ToTime(long lDate)
{
	long a,b,c,d,e,z,alpha;
	z = lDate + 1;

	// dealing with Gregorian calendar reform

	if (z < 2299161L)
		a = z;
	else
	{
		alpha = (long) ((z-1867216.25) / 36524.25);
		a = z + 1 + alpha - alpha/4;
	}

	b = ( a > 1721423 ? a + 1524 : a + 1158 );
	c = (long) ((b - 122.1) / 365.25);
	d = (long) (365.25 * c);
	e = (long) ((b - d) / 30.6001);

	m_iDay = (unsigned char)(b - d - (long)(30.6001 * e));
	m_iMonth = (unsigned char)((e < 13.5) ? e - 1 : e - 13);
    m_iYear = (int)((m_iMonth > 2.5 ) ? (c - 4716) : c - 4715);
	GetWeekFromLongTime();
}

int CDateTime::GetWeekFromLongTime()
{
   m_iWeek = (unsigned char) ((m_lTime + 1) % 7 + 1);
   return m_iWeek;
}

bool CDateTime::isLeapYear()
{
	return  ( (m_iYear >= 1582) ?
		  (m_iYear % 4 == 0  &&  m_iYear % 100 != 0  ||  m_iYear % 400 == 0 ):
		  (m_iYear % 4 == 0) );
}

int CDateTime::DaysInMonth()
{
    return MonDays[m_iMonth-1] + (m_iMonth==2 && isLeapYear());
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费日韩伦理电影| 日本视频在线一区| 91精品国产91热久久久做人人| 高潮精品一区videoshd| 国产福利91精品一区| 国产一区在线观看视频| 国产+成+人+亚洲欧洲自线| 岛国精品在线观看| 风间由美一区二区三区在线观看| 国产伦精品一区二区三区免费| 国内外成人在线视频| 国产精品一线二线三线| 国产成人在线网站| av不卡免费电影| 欧美三级电影一区| 日韩欧美亚洲另类制服综合在线| 欧美电影免费观看高清完整版在线 | 91精品婷婷国产综合久久性色 | 成人精品视频一区二区三区| youjizz国产精品| 色一情一乱一乱一91av| 制服丝袜国产精品| 久久色在线视频| 亚洲视频资源在线| 日本亚洲免费观看| 国产成人午夜视频| 欧美亚洲一区二区在线| 亚洲精品一区二区三区蜜桃下载| 国产欧美久久久精品影院| 亚洲欧美综合网| 日本亚洲免费观看| 色综合中文字幕| 日韩一区二区三区四区| 国产精品美女久久久久av爽李琼 | 日韩精品影音先锋| 国产精品狼人久久影院观看方式| 一区二区三区四区中文字幕| 久久精品99久久久| 91久久精品国产91性色tv| 91精品黄色片免费大全| 亚洲国产精品ⅴa在线观看| 亚洲成av人综合在线观看| 国产精品1区2区3区在线观看| 欧美影院一区二区三区| 国产欧美日韩视频在线观看| 午夜精品福利在线| 成人激情校园春色| 日韩精品一区二区三区四区 | 亚洲精品乱码久久久久久黑人 | 欧美一级爆毛片| 亚洲欧洲日产国码二区| 日本女人一区二区三区| 成人av网站在线观看| 91精选在线观看| 亚洲男人都懂的| 成人av在线电影| 欧美激情自拍偷拍| 国产在线精品不卡| 精品久久一区二区三区| 美女被吸乳得到大胸91| 欧美精品日日鲁夜夜添| 亚洲mv在线观看| 欧美系列日韩一区| 亚洲一区在线观看网站| 成人黄色在线视频| 国产女主播一区| 高清av一区二区| 国产视频一区二区三区在线观看| 国内外成人在线| 国产日韩在线不卡| 丁香网亚洲国际| 国产精品久久一级| 99热国产精品| 亚洲猫色日本管| 欧洲人成人精品| 午夜精品久久久久久久久久 | 国产一区二区美女| 亚洲精品一区二区三区99| 蜜臀av一区二区在线观看| 欧美成人乱码一区二区三区| 蜜桃av一区二区在线观看| 精品国精品国产| 国产精品69毛片高清亚洲| 欧美国产欧美综合| 色久优优欧美色久优优| 亚洲线精品一区二区三区| 欧美亚州韩日在线看免费版国语版| 亚洲男人电影天堂| 3d成人h动漫网站入口| 久久99国产精品麻豆| 国产色一区二区| 99久久精品国产导航| 亚洲综合清纯丝袜自拍| 91精品国产综合久久精品麻豆| 日韩成人精品在线| 久久中文娱乐网| 91丨porny丨国产入口| 亚洲一区在线观看免费观看电影高清| 欧美日本一区二区在线观看| 久久99精品久久久| 中文字幕视频一区| 日韩视频免费观看高清完整版| 国产精品一区免费在线观看| 亚洲欧美一区二区不卡| 91麻豆精品国产综合久久久久久| 国产美女一区二区| 亚洲制服丝袜一区| 91丨porny丨最新| 韩日欧美一区二区三区| 日韩伦理免费电影| 欧美mv日韩mv亚洲| 色欧美乱欧美15图片| 美女精品自拍一二三四| 一区二区三区在线视频观看58| 欧美成人一区二区三区在线观看| av亚洲产国偷v产偷v自拍| 美腿丝袜亚洲综合| 亚洲欧美另类久久久精品2019| 日韩片之四级片| 欧洲国产伦久久久久久久| 国产做a爰片久久毛片| 亚洲国产精品一区二区www在线 | 国产综合久久久久久鬼色| 中文文精品字幕一区二区| 精品视频一区二区不卡| 国产精品综合在线视频| 亚洲v中文字幕| 国产精品免费网站在线观看| 欧美一区二区三区四区视频| 91啪九色porn原创视频在线观看| 久久er精品视频| 日一区二区三区| 亚洲成人激情自拍| 亚洲人123区| 中文字幕日本不卡| 中文字幕的久久| 久久精品一区二区| 久久精品人人做人人综合| 51久久夜色精品国产麻豆| 欧洲精品视频在线观看| 91免费小视频| 91美女在线视频| 99精品国产99久久久久久白柏| 国产精华液一区二区三区| 久久激情综合网| 久久激情综合网| 免费成人在线观看视频| 秋霞国产午夜精品免费视频| 亚洲成人精品影院| 亚洲国产aⅴ天堂久久| 一区二区三区在线影院| 亚洲黄色录像片| 亚洲电影在线播放| 亚洲成人一区在线| 午夜视频一区二区三区| 日韩综合在线视频| 久久成人av少妇免费| 激情综合一区二区三区| 精品一区中文字幕| 东方aⅴ免费观看久久av| 91影院在线免费观看| 91久久人澡人人添人人爽欧美| 日本韩国欧美国产| 欧美三级在线播放| 欧美成人性战久久| 欧美国产精品久久| 亚洲欧美国产77777| 午夜精品久久久久久久久久久 | 久久久久久日产精品| 中文av一区二区| 亚洲激情在线激情| 天堂影院一区二区| 久久精品国产精品青草| 成人黄色av网站在线| 色激情天天射综合网| 91麻豆精品国产91久久久久久久久 | 国产在线精品一区在线观看麻豆| 久久国产精品色| 成人h精品动漫一区二区三区| 91国偷自产一区二区三区观看| 欧美日韩国产不卡| 国产亚洲精品aa午夜观看| 亚洲欧美韩国综合色| 奇米一区二区三区| av不卡免费在线观看| 91精品国产综合久久福利 | 亚洲影视在线播放| 久久不见久久见免费视频1| 99久精品国产| 欧美电影免费观看高清完整版在线 | 日韩美女视频一区| 免费在线看一区| 色欧美日韩亚洲| 国产欧美va欧美不卡在线| 香蕉久久一区二区不卡无毒影院| 久草中文综合在线| 欧美剧情电影在线观看完整版免费励志电影 | 欧美在线一区二区三区| 久久久91精品国产一区二区三区| 亚洲国产精品影院|