91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言標準時間與秒單位怎么相互轉換

發布時間:2022-05-13 13:12:07 來源:億速云 閱讀:411 作者:iii 欄目:開發技術

今天小編給大家分享一下C語言標準時間與秒單位怎么相互轉換的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1. 時間轉換-秒與標準時間的轉換

1.時間轉換(秒與標準時間的轉換)
(1)函數1: 將秒單位時間轉為標準時間。 --RTC實時時鐘—>秒為單位—>每秒鐘cnt++;
237562867493 -----xxxx年xx月xx日xx時xx分xx秒 星期x。

示例代碼: (模擬電子鐘)

#include <stdio.h>
#include <string.h>  //字符串處理
#include <Windows.h> 
//時間單位
int year,mon,mdeay,hour,min,t_sec;
//閏年的月份
int mon_r[12]={31,29,31,30,31,30,31,31,30,31,30,31};
//平年的月份
int mon_p[12]={31,28,31,30,31,30,31,31,30,31,30,31};
unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec);
void SecToTime(unsigned int sec);
int main(void)
{
	//將標準時間轉為秒單位時間  (設置時間)
	unsigned int time=TimeToSec(2018,6,6,16,40,20);
	
	while(1)
	{
		time++;
		Sleep(1000); //睡眠1秒時間。 單位是ms
		SecToTime(time);
		printf("%d-%d-%d %d:%d:%d\n",year,mon,mdeay,hour,min,t_sec);
	}
	return 0;
}

/*
函數功能: 判斷平年和閏年
函數返回值: 1表示閏年  0表示平年
*/
int GetYearStat(int year)
{
	if((year%4==0&&year%100!=0)||year%400==0)return 1; //閏年
	return 0; //平年
}

/*
將秒單位時間轉為標準時間
時間基準點: 1970年1月1日0時0分0秒
思想: 減法
*/
void SecToTime(unsigned int sec)
{
	int i;
	year=1970; //基準年份
	/*1. 計算過了多少年*/
	while(sec>=365*24*60*60) //秒還夠一年
	{
		if(GetYearStat(year)) //閏年
		{
			if(sec>366*24*60*60)
			{
				sec-=366*24*60*60; //減去一年
				year++; //年份累加
			}
			else
			{
				break;
			}
		}
		else
		{
			sec-=365*24*60*60; //減去一年
			year++; //年份累加
		}
	}

	/*2. 計算過了多少月*/
	mon=1;
	if(GetYearStat(year)) //閏年
	{
		for(i=0; i<12; i++)
		{
			if(sec>=mon_r[i]*24*60*60) //夠一個月
			{
				sec-=mon_r[i]*24*60*60; //減去一個月
				mon++;//增加一個月
			}
			else break;
		}
	}
	else
	{
		for(i=0; i<12; i++)
		{
			if(sec>=mon_p[i]*24*60*60) //夠一個月
			{
				sec-=mon_p[i]*24*60*60; //減去一個月
				mon++;//增加一個月
			}
			else break;
		}
	}
	
	/*3. 計算過了多少天*/
	mdeay=1;
	while(sec>=24*60*60) //判斷是否夠一天
	{
		sec-=24*60*60;
		mdeay++;
	}

	/*4. 過了多少小時*/
	hour=0;
	while(sec>=60*60)
	{
		sec-=60*60;
		hour++;
	}
	/*5. 過了多少分鐘*/
	min=0;
	while(sec>=60)
	{
		sec-=60;
		min++;
	}
	/*6. 過了多少秒*/
	t_sec=sec; 
}

/*
將標準時間轉為秒單位時間
思路: 全程加法
時間基準點: 1970年1月1日0時0分0秒
返回值: 得到的秒單位時間
*/
unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec)
{
	int i;
	int sec_cnt=0; //記錄秒單位的時間
	/*1. 轉換年*/
	for(i=1970; i<year; i++)
	{
		if(GetYearStat(i)) //閏年
		{
			sec_cnt+=366*24*60*60;
		}
		else
		{
			sec_cnt+=365*24*60*60;
		}
	}

	/*2. 轉換月*/
	for(i=0; i<mon-1; i++)
	{
		if(GetYearStat(year)) //閏年
		{
			sec_cnt+=mon_r[i]*24*60*60;
		}
		else
		{
			sec_cnt+=mon_p[i]*24*60*60;
		}
	}

	/*3. 轉換天數*/
	sec_cnt+=(mdeay-1)*24*60*60;
	
	/*4. 轉換小時*/
	sec_cnt+=hour*60*60;

	/*5. 轉換分鐘*/
	sec_cnt+=min*60;

	/*6. 轉換秒*/
	sec_cnt+=sec;
	return sec_cnt; //返回秒單位時間
}

完整的代碼(添加星期):

#include <stdio.h>
#include <string.h>  //字符串處理
#include <Windows.h> 
//時間單位
int year,mon,mdeay,hour,min,t_sec,week;
//閏年的月份
int mon_r[12]={31,29,31,30,31,30,31,31,30,31,30,31};
//平年的月份
int mon_p[12]={31,28,31,30,31,30,31,31,30,31,30,31};
unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec);
void SecToTime(unsigned int sec);
int GetWeek(unsigned int sec);

int main(void)
{
    //將標準時間轉為秒單位時間  (設置時間)
    unsigned int time=TimeToSec(2018,9,1,16,40,20);
    while(1)
    {
        time++;
        Sleep(1000); //睡眠1秒時間。 單位是ms
        SecToTime(time);
        week=GetWeek(time); //獲取星期
        printf("%d-%d-%d %d:%d:%d 星期%d\n",year,mon,mdeay,hour,min,t_sec,week);
    }
    return 0;
}
/*
函數功能: 判斷平年和閏年
函數返回值: 1表示閏年  0表示平年
*/
int GetYearStat(int year)
{
    if((year%4==0&&year%100!=0)||year%400==0)return 1; //閏年
    return 0; //平年
}

/*
將秒單位時間轉為標準時間
時間基準點: 1970年1月1日0時0分0秒
思想: 減法
*/
void SecToTime(unsigned int sec)
{
    int i;
    year=1970; //基準年份
    /*1. 計算過了多少年*/
    while(sec>=365*24*60*60) //秒還夠一年
    {
        if(GetYearStat(year)) //閏年
        {
            if(sec>366*24*60*60)
            {
                sec-=366*24*60*60; //減去一年
                year++; //年份累加
            }
            else
            {
                break;
            }
        }
        else
        {
            sec-=365*24*60*60; //減去一年
            year++; //年份累加
        }
    }

    /*2. 計算過了多少月*/
    mon=1;
    if(GetYearStat(year)) //閏年
    {
        for(i=0; i<12; i++)
        {
            if(sec>=mon_r[i]*24*60*60) //夠一個月
            {
                sec-=mon_r[i]*24*60*60; //減去一個月
                mon++;//增加一個月
            }
            else break;
        }
    }
    else
    {
        for(i=0; i<12; i++)
        {
            if(sec>=mon_p[i]*24*60*60) //夠一個月
            {
                sec-=mon_p[i]*24*60*60; //減去一個月
                mon++;//增加一個月
            }
            else break;
        }
    }
    
    /*3. 計算過了多少天*/
    mdeay=1;
    while(sec>=24*60*60) //判斷是否夠一天
    {
        sec-=24*60*60;
        mdeay++;
    }

    /*4. 過了多少小時*/
    hour=0;
    while(sec>=60*60)
    {
        sec-=60*60;
        hour++;
    }
    /*5. 過了多少分鐘*/
    min=0;
    while(sec>=60)
    {
        sec-=60;
        min++;
    }
    /*6. 過了多少秒*/
    t_sec=sec; 
}

2. 時間轉換-標準時間轉秒

(2)函數2: 將標準時間轉為秒單位的時間。
2018年6月1日19點41分23秒----------xxxxxxx秒
閏年366,平年365。 區分: 每年二月份相差一天.
標準時間基準點: 1970年1月1日0時0分0秒。

/*
將標準時間轉為秒單位時間
思路: 全程加法
時間基準點: 1970年1月1日0時0分0秒
返回值: 得到的秒單位時間
*/
unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec)
{
	int i;
	int sec_cnt=0; //記錄秒單位的時間
	/*1. 轉換年*/
	for(i=1970; i<year; i++)
	{
		if(GetYearStat(i)) //閏年
		{
			sec_cnt+=366*24*60*60;
		}
		else
		{
			sec_cnt+=365*24*60*60;
		}
	}

	/*2. 轉換月*/
	for(i=0; i<mon-1; i++)
	{
		if(GetYearStat(year)) //閏年
		{
			sec_cnt+=mon_r[i]*24*60*60;
		}
		else
		{
			sec_cnt+=mon_p[i]*24*60*60;
		}
	}

	/*3. 轉換天數*/
	sec_cnt+=(mdeay-1)*24*60*60;
	
	/*4. 轉換小時*/
	sec_cnt+=hour*60*60;

	/*5. 轉換分鐘*/
	sec_cnt+=min*60;

	/*6. 轉換秒*/
	sec_cnt+=sec;
	return sec_cnt;
}

/*
函數功能: 根據秒單位時間獲取星期
函數形參: 秒單位時間
返回值  :星期(1~7)
*/
int GetWeek(unsigned int sec)
{
	int mdeay=sec/60/60/24; //將秒單位時間轉為天數
	switch(mdeay%7)
	{
	case 0: //星期4
		return 4;
		break;
	case 1://星期5
		return 5;
		break;
	case 2: //星期6
		return 6;
		break;
	case 3://星期天
		return 7;
		break;
	case 4://星期1
		return 1;
		break;
	case 5://星期2
		return 2;
		break;
	case 6: //星期3
		return 3;
		break;
	default:
		break;
	}
}

以上就是“C語言標準時間與秒單位怎么相互轉換”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

繁昌县| 疏附县| 德令哈市| 中宁县| 仙居县| 平远县| 客服| 大悟县| 望城县| 蓬溪县| 桂平市| 汕头市| 宁海县| 定兴县| 乌鲁木齐县| 谢通门县| 武隆县| 寿光市| 自治县| 泰州市| 梧州市| 陈巴尔虎旗| 澎湖县| 山阴县| 凤冈县| 阆中市| 思茅市| 巫山县| 江陵县| 荃湾区| 罗甸县| 平远县| 大冶市| 和林格尔县| 临泉县| 遂昌县| 武山县| 贵定县| 鹤峰县| 吴旗县| 沅江市|