⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gatetime.cpp

📁 此程序适用于电力系统中的网关程序
💻 CPP
字号:
/******************************************************************
* Copyright (c) 2004-2005, 许继日立公司
* All rights reserved.
* 
* 文件名称:gatetime.cpp
* 文件标识:
* 摘    要:时间计算类
*		
* 当前版本:1.0
* 作    者:李龙伟  <lilongwei1@hotmail.com>
* 完成日期:2004年12月24日
*
* 取代版本:1.0 
* 原作者  :李龙伟
* 完成日期:2004年12月24日
******************************************************************/

#include <stdio.h>
#include <stdlib.h>
//#include "datadef.h"
#include "gatetime.h"


PansTime::PansTime()
{
}

PansTime::~ PansTime()
{
}

bool PansTime::GetCurTime(SYSTEMTIME *systime)
{
	GetLocalTime(systime);
	return TRUE;
}

void PansTime::TimeAdd(SYSTEMTIME *systime, int iSec)
{
	time_t tt;

	tt = time(NULL);
	struct tm *stm;
	tt += iSec;	
	stm =  localtime(&tt);

	systime->wYear = stm->tm_year+1900;
	systime->wMonth = stm->tm_mon+1;
	systime->wDay = stm->tm_mday;
	systime->wHour = stm->tm_hour;
	systime->wMinute = stm->tm_min;
	systime->wSecond = stm->tm_sec;

}

bool PansTime::DateAdd(SYSTEMTIME *systime, int iday)
{
	short	wy, wm, wd;
	long	lday;
	short i;

	wy = systime->wYear;
	wm = systime->wMonth;
	wd = systime->wDay;
	lday = 365 * (wy-1901) + (wy-1901) / 4 + wd;
	
	for (i=1; i<wm; i++)
	{	
		if (i != 2)
		{
			if (i==4 || i==6 || i==9 || i==11)
			{
				lday += 30;
			}
			else 
			{
				lday +=31 ;
			}
		}
		else
		{
			if ((wy % 4) == 0)
			{
				lday +=29;
			}
			else 
			{
				lday +=28;
			}
		}
	}
	lday +=iday;

	wy = (lday / 365) / 4;
	wd = lday % 365;
	systime->wYear =(lday/365)+1901;

	if (wd==wy)
	{
		systime->wYear --;
		systime->wMonth = 12;
		systime->wDay = 31;
		return TRUE;
	}
	else if (wd > wy)
	{
		wd -= wy;
	}
	else
	{
		systime -> wYear--;
		wd = wd - wy + 365;
		if ((systime -> wYear) % 4 == 0) 
		{
			wd++;
		}
	}

	for (i=1; i<13; i++)
	{
		if (i != 2)
		{
			if (i==4 || i==6 || i==9 || i==11) 
			{
				if (wd > 30)
				{
					wd -= 30;
				}
				else 
				{
					break;
				}
			}
			else 
			{
				if (wd > 31)
				{
					wd -=31 ;
				}
				else 
				{
					break;
				}
			}
		}
		else
		{
			if ((systime -> wYear % 4) == 0 )
			{
				if (wd > 29)
				{
					wd -= 29;
				}
				else 
				{
					break;
				}
			}
			else 
			{
				if (wd > 28)
				{
					wd -= 28;
				}
				else 
				{
					break;
				}
			}
		}
	}
	systime->wMonth = i;
	systime->wDay = wd;

	return TRUE;
}
/*
void main(int argc,char *argv[])
{
	SYSTEMTIME nowtime;
	int i;
	PansTime pt;
	pt.GetLocalTime(&nowtime);
	printf("%d %d %d %d %d %d %d \n",nowtime.wYear,nowtime.wMonth,nowtime.wDay,
	       nowtime.wHour,nowtime.wMinute,nowtime.wSecond,nowtime.wHundsec);
	if(argc!=5) 
	{
		nowtime.wYear = 1904; 
		nowtime.wMonth = 1;  
		nowtime.wDay = 1 ; 
		i=-1;
	}
	else{
		nowtime.wYear = atoi(argv[1]);
		nowtime.wMonth = atoi(argv[2]);
		nowtime.wDay = atoi(argv[3]);
		i = atoi(argv[4]);
		printf("%d %d %d %d\n",nowtime.wYear,nowtime.wMonth ,nowtime.wDay,
			atoi(argv[4]));
	}
	
	pt.DateAdd(&nowtime,i);
	
	printf("%d %d %d \n",nowtime.wYear,nowtime.wMonth ,nowtime.wDay);      
	struct timespec tp;
	clock_gettime(CLOCK_REALTIME,tp);

}	

*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -