/*************************** (C) COPYRIGHT 2017 CXHY ****************************
 * 文件名  date_time.c
 * 描  述  ：时期时间相关程序
 * 版  本  ：V1.0
 * 作  者  ：XuZhongPing
 * 日  期  ：2021/02/05
*********************************************************************************/
#include "date_time.h"
#include "timer.h"

my_time_t GMT_Time;															//格林威治时间
my_time_t beijing_Time;													//北京时间

uint8_t systemTime[20];													//系统时间格式为YYYY-MM-DD hh:mm:ss
uint8_t getDateTimeMark = 0;										//取得时期时间标志

time_t timestamp_s = 0;													//以秒(s)为单位的时间戳

struct tm* nowTime;

/*
***********************************************************************
*	函 数 名: UTC_To_Beijing
*	功能说明: 格林威治时间转北京时间
*	形    参：time:转换前的GMT时间
*	返 回 值: 无（影响全局变量beijing_Time）
***********************************************************************
*/
void GMT_To_Beijing(my_time_t* time)
{
	struct tm stm;
	struct tm dataTime;
	time_t bj_timestamp_s;
	
	//GMT日期时间转时间戳
	stm.tm_year = GMT_Time.year-1900;  
	stm.tm_mon = GMT_Time.month-1;
	stm.tm_mday = GMT_Time.day;
	stm.tm_hour = GMT_Time.hour;  
	stm.tm_min = GMT_Time.minute;
	stm.tm_sec = GMT_Time.second;
	
	timestamp_s = mktime(&stm); 
	
	//UTC时间戳转北京时间戳(北京时间比UTC时间早8小时即28800秒)
	bj_timestamp_s = timestamp_s + 28800;
	nowTime = localtime(&bj_timestamp_s);
	
	//字符串形式
	strftime((char*)systemTime, 20, "%Y-%m-%d %H:%M:%S", nowTime);
	printf("\r\n更新时间：%s\r\n", (char*)systemTime);
}

/*
***********************************************************************
*	函 数 名: TimerTask
*	功能说明: 时钟任务
*	形    参：无
*	返 回 值: 无
***********************************************************************
*/
void TimerTask(void)
{
	char buffer[128];
	static timer Timer_1S;
	struct tm dataTime;
	time_t bj_timestamp_s;
	
	static uint8_t timer_ok = 0;
	if(timer_ok == 0)
	{
		timer_ok = 1;

		timer_set(&Timer_1S, CLOCK_SECOND*1);
	}
	
	
	if(timer_expired(&Timer_1S))
	{
		timer_restart(&Timer_1S);
		
		if(getDateTimeMark == 0)
		{
			printf("\r\n未获得日期时间!\r\n");
		}
		
		timestamp_s++;
		
		bj_timestamp_s = timestamp_s + 28800;
		nowTime = localtime(&bj_timestamp_s);
		
		strftime((char*)systemTime, 20, "%Y-%m-%d %H:%M:%S", nowTime);
// 		strftime(buffer, sizeof(buffer), "Now time: %Y-%m-%d %H:%M:%S", nowTime);
// 		printf("\r\n%s\r\n", buffer);

// 		printf("\r\ntimestamp:%d\r\n", timestamp_s);
// 		printf("\r\ntimestamp_ms_h:%04X\r\n", timestamp_ms_H32);
// 		printf("\r\ntimestamp_ms_l:%08X\r\n", timestamp_ms_L32);
	}
}

/******************** (C) COPYRIGHT 2017 CXHY *****END OF FILE*******************/
