色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言_標準時間與秒單位的轉換

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-08-14 09:49 ? 次閱讀

這篇文章介紹 標準時間與秒單位,秒單位與標準時間的轉換方式,這份代碼一般用在嵌入式單片機里比較多,比如:設置RTC時鐘的時間,從RTC里讀取秒單位時間后,需要轉換成標準時間顯示。

下面列出的兩個例子里,注釋和思路都寫了,思路和實現辦法在代碼注釋里。

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

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

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

#include 
#include   //字符串處理
#include  

//時間單位
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
#include   //字符串處理
#include  

//時間單位
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;>
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634668
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136696
  • RTC
    RTC
    +關注

    關注

    2

    文章

    538

    瀏覽量

    66468
收藏 人收藏

    評論

    相關推薦

    應用廣泛的北斗標準時間

    北斗
    風雷儀表
    發布于 :2023年07月04日 15:50:58

    靠譜的linux系統時間校準方法概述

    今天在centos上設置定時任務,發現執行了但時間不對,用date命令讀取系統時間,發現系統時間不是當前時間。網上說用命令ntpdatepool.ntp.org校準,發現校準后date
    發表于 07-17 06:27

    利用單片機的端口分別控制LCD1602標準時鐘系統

    網上轉載:利用單片機的端口分別控制LCD1602標準時鐘系統、蜂鳴器和LED燈,達到智能操控照明系統,并用PROTEL 99SE軟件對原理圖和電路板的制作。這個主要是對光照的控制用單片機
    發表于 11-19 07:15

    什么是C語言標準

    ? 1、C 語言標準什么是 C 語言標準呢? 我們生活的現實世界,就是由各種
    發表于 12-15 09:10

    ESP8266 NODEMCU是怎樣獲取互聯網上面時間服務器標準時間的呢

    ESP8266 NODEMCU是怎樣獲取互聯網上面時間服務器標準時間的呢?其城訓代碼該怎樣去編寫呢?
    發表于 02-15 06:43

    A5358標準時序電路圖

    A5358標準時序電路圖
    發表于 07-03 12:30 ?991次閱讀
    A5358<b class='flag-5'>標準時</b>序電路圖

    北京標準時間校對軟件1.7實用工具應用程序免費下載

    本文檔的主要內容詳細介紹的是北京標準時間校對軟件1.7免費下載。
    發表于 09-03 08:00 ?4次下載
    北京<b class='flag-5'>標準時間</b>校對軟件1.7實用工具應用程序免費下載

    VRJAM和Sansar合作創建了VR世界中最大的獨立音樂和藝術節

    HTC的Viveport為用戶免費贈送今年的Lost Horizon的音樂節。該活動將于本周末從周六下午3點(太平洋標準時間上午7點)到周日凌晨3點(太平洋標準時間下午7點,仍在周六)舉行。
    的頭像 發表于 07-06 16:39 ?1736次閱讀

    獲取網絡標準時間的源代碼下載

    獲取網絡標準時間的源代碼下載
    發表于 06-07 16:15 ?1次下載

    nodemcu解析服務器文件,實用經驗帖 ESP8266 NODEMCU 獲取互聯網上面時間服務器的標準......

    實用經驗帖 ESP8266 NODEMCU 獲取互聯網上面時間服務器的標準時間能少用原件盡量少用,所以就不用時間模塊,直接用NODEMCU獲取標準時間。硬件:NODEMCU 一塊軟件:
    發表于 12-17 18:00 ?0次下載
    nodemcu解析服務器文件,實用經驗帖 ESP8266 NODEMCU 獲取互聯網上面<b class='flag-5'>時間</b>服務器的<b class='flag-5'>標準</b>......

    嵌入式代碼如何解決時間問題、編碼問題

    UTC時間(Universal Time Coordinated, 世界標準時間或世界協調時間),以原子時長為基礎,在時刻上盡量接近于世界時的一種
    發表于 11-14 15:46 ?677次閱讀

    MM32SPIN0280內部時鐘捕獲外部HSE時鐘

    對一段標準時間內的被測信號的上升沿數量進行計數。
    的頭像 發表于 05-12 13:50 ?699次閱讀
    MM32SPIN0280內部時鐘捕獲外部HSE時鐘

    MM32SPIN0280內部時鐘捕獲外部HSE時鐘

    對一段標準時間內的被測信號的上升沿數量進行計數。
    的頭像 發表于 05-23 15:49 ?893次閱讀
    MM32SPIN0280內部時鐘捕獲外部HSE時鐘

    【京準】標準時鐘系統:精確、可靠的時間計量工具

    【京準】標準時鐘系統:精確、可靠的時間計量工具
    的頭像 發表于 06-04 11:26 ?938次閱讀

    北斗衛星同步時鐘系統:精準時間的秘密

    辦公樓中,所有的電腦、時鐘甚至是樓宇的自動化系統,都顯示著同一個時間。這個時間均來源于北斗衛星同步時鐘系統。這個系統由一個母鐘(主時鐘)和一堆子鐘組成,母鐘負責發送標準時間信號,而子鐘則負責接收并
    的頭像 發表于 12-03 14:19 ?135次閱讀
    北斗衛星同步時鐘系統:精<b class='flag-5'>準時間</b>的秘密
    主站蜘蛛池模板: 最近免费中文字幕大全免费| 狂操空姐电影| 先锋资源久久| 国产精品嫩草影视在线观看| 少妇仑乱A毛片| 日韩无码在线| 中文字幕在线不卡日本v二区| 精品综合久久久久久8888| 日韩专区亚洲国产精品| 成片免费观看视频在线网| 精品久久久久久久99热| 一二三四在线高清中文版免费观看电影 | 亚洲午夜精品一区二区公牛电影院| 插曲的痛30分钟视频最新章节| 久久久久国产精品嫩草影院 | 亚洲AV综合色一区二区三区| 国产熟妇无码一区二| 亚洲第一色网站| 精品亚洲大全| 37pao成人国产永久免费视频| 伦理片飘花免费影院| 99热在线免费播放| 日本女人下面毛茸茸| 国产成人综合在线观看网站| 性色无码AV久久蜜臀| 激情丛林电影完整在线| 在线观看视频国产| 久久99视频免费| 中文字幕一区中文亚洲| 欧美视频毛片在线播放| 4480YY旧里番在线播放| 欧洲美女高清一级毛片| 99久久精品费精品国产| 日本人69xxx| 国产免费网站看v片在线| 艳妇臀荡乳欲伦岳TXT下载| 和尚扒开双腿蹂躏| 中文在线中文资源| 青青青久久| 国产午夜福利片| 中国老女人xxhd69|