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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言_標(biāo)準(zhǔn)時(shí)間與秒單位的轉(zhuǎn)換

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

這篇文章介紹 標(biāo)準(zhǔn)時(shí)間與秒單位,秒單位與標(biāo)準(zhǔn)時(shí)間的轉(zhuǎn)換方式,這份代碼一般用在嵌入式單片機(jī)里比較多,比如:設(shè)置RTC時(shí)鐘的時(shí)間,從RTC里讀取秒單位時(shí)間后,需要轉(zhuǎn)換成標(biāo)準(zhǔn)時(shí)間顯示。

下面列出的兩個(gè)例子里,注釋和思路都寫了,思路和實(shí)現(xiàn)辦法在代碼注釋里。

1. 時(shí)間轉(zhuǎn)換-秒與標(biāo)準(zhǔn)時(shí)間的轉(zhuǎn)換

1.時(shí)間轉(zhuǎn)換(秒與標(biāo)準(zhǔn)時(shí)間的轉(zhuǎn)換)
(1)函數(shù)1: 將秒單位時(shí)間轉(zhuǎn)為標(biāo)準(zhǔn)時(shí)間。 --RTC實(shí)時(shí)時(shí)鐘—>秒為單位—>每秒鐘cnt++;
237562867493 -----xxxx年xx月xx日xx時(shí)xx分xx秒 星期x。

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

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

//時(shí)間單位
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)
{
	//將標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)為秒單位時(shí)間  (設(shè)置時(shí)間)
	unsigned int time=TimeToSec(2018,6,6,16,40,20);
	
	while(1)
	{
		time++;
		Sleep(1000); //睡眠1秒時(shí)間。 單位是ms
		SecToTime(time);
		printf("%d-%d-%d %d:%d:%d\n",year,mon,mdeay,hour,min,t_sec);
	}
	return 0;
}

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

/*
將秒單位時(shí)間轉(zhuǎn)為標(biāo)準(zhǔn)時(shí)間
時(shí)間基準(zhǔn)點(diǎn): 1970年1月1日0時(shí)0分0秒
思想: 減法
*/
void SecToTime(unsigned int sec)
{
	int i;
	year=1970; //基準(zhǔn)年份
	/*1. 計(jì)算過了多少年*/
	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. 計(jì)算過了多少月*/
	mon=1;
	if(GetYearStat(year)) //閏年
	{
		for(i=0; i<12; i++)
		{
			if(sec>=mon_r[i]*24*60*60) //夠一個(gè)月
			{
				sec-=mon_r[i]*24*60*60; //減去一個(gè)月
				mon++;//增加一個(gè)月
			}
			else break;
		}
	}
	else
	{
		for(i=0; i<12; i++)
		{
			if(sec>=mon_p[i]*24*60*60) //夠一個(gè)月
			{
				sec-=mon_p[i]*24*60*60; //減去一個(gè)月
				mon++;//增加一個(gè)月
			}
			else break;
		}
	}
	
	/*3. 計(jì)算過了多少天*/
	mdeay=1;
	while(sec>=24*60*60) //判斷是否夠一天
	{
		sec-=24*60*60;
		mdeay++;
	}

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

/*
將標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)為秒單位時(shí)間
思路: 全程加法
時(shí)間基準(zhǔn)點(diǎn): 1970年1月1日0時(shí)0分0秒
返回值: 得到的秒單位時(shí)間
*/
unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec)
{
	int i;
	int sec_cnt=0; //記錄秒單位的時(shí)間
	/*1. 轉(zhuǎn)換年*/
	for(i=1970; i
#include   //字符串處理
#include  

//時(shí)間單位
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)
{
	//將標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)為秒單位時(shí)間  (設(shè)置時(shí)間)
	unsigned int time=TimeToSec(2018,9,1,16,40,20);
	while(1)
	{
		time++;
		Sleep(1000); //睡眠1秒時(shí)間。 單位是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;
}
/*
函數(shù)功能: 判斷平年和閏年
函數(shù)返回值: 1表示閏年  0表示平年
*/
int GetYearStat(int year)
{
	if((year%4==0&&year%100!=0)||year%400==0)return 1; //閏年
	return 0; //平年
}

/*
將秒單位時(shí)間轉(zhuǎn)為標(biāo)準(zhǔn)時(shí)間
時(shí)間基準(zhǔn)點(diǎn): 1970年1月1日0時(shí)0分0秒
思想: 減法
*/
void SecToTime(unsigned int sec)
{
	int i;
	year=1970; //基準(zhǔn)年份
	/*1. 計(jì)算過了多少年*/
	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. 計(jì)算過了多少月*/
	mon=1;
	if(GetYearStat(year)) //閏年
	{
		for(i=0; i<12; i++)
		{
			if(sec>=mon_r[i]*24*60*60) //夠一個(gè)月
			{
				sec-=mon_r[i]*24*60*60; //減去一個(gè)月
				mon++;//增加一個(gè)月
			}
			else break;
		}
	}
	else
	{
		for(i=0; i<12; i++)
		{
			if(sec>=mon_p[i]*24*60*60) //夠一個(gè)月
			{
				sec-=mon_p[i]*24*60*60; //減去一個(gè)月
				mon++;//增加一個(gè)月
			}
			else break;
		}
	}
	
	/*3. 計(jì)算過了多少天*/
	mdeay=1;
	while(sec>=24*60*60) //判斷是否夠一天
	{
		sec-=24*60*60;
		mdeay++;
	}

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

2. 時(shí)間轉(zhuǎn)換-標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)秒

(2)函數(shù)2: 將標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)為秒單位的時(shí)間。
2018年6月1日19點(diǎn)41分23秒----------xxxxxxx秒
閏年366,平年365。 區(qū)分: 每年二月份相差一天.
標(biāo)準(zhǔn)時(shí)間基準(zhǔn)點(diǎn): 1970年1月1日0時(shí)0分0秒。

/*
將標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)為秒單位時(shí)間
思路: 全程加法
時(shí)間基準(zhǔn)點(diǎn): 1970年1月1日0時(shí)0分0秒
返回值: 得到的秒單位時(shí)間
*/
unsigned int TimeToSec(int year,int mon,int mdeay,int hour,int min,int sec)
{
	int i;
	int sec_cnt=0; //記錄秒單位的時(shí)間
	/*1. 轉(zhuǎn)換年*/
	for(i=1970; i;>
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6041

    文章

    44616

    瀏覽量

    637418
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137395
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    542

    瀏覽量

    66849
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    應(yīng)用廣泛的北斗標(biāo)準(zhǔn)時(shí)間

    北斗
    風(fēng)雷儀表
    發(fā)布于 :2023年07月04日 15:50:58

    靠譜的linux系統(tǒng)時(shí)間校準(zhǔn)方法概述

    今天在centos上設(shè)置定時(shí)任務(wù),發(fā)現(xiàn)執(zhí)行了但時(shí)間不對,用date命令讀取系統(tǒng)時(shí)間,發(fā)現(xiàn)系統(tǒng)時(shí)間不是當(dāng)前時(shí)間。網(wǎng)上說用命令ntpdatepool.ntp.org校準(zhǔn),發(fā)現(xiàn)校準(zhǔn)后date
    發(fā)表于 07-17 06:27

    利用單片機(jī)的端口分別控制LCD1602標(biāo)準(zhǔn)時(shí)鐘系統(tǒng)

    網(wǎng)上轉(zhuǎn)載:利用單片機(jī)的端口分別控制LCD1602標(biāo)準(zhǔn)時(shí)鐘系統(tǒng)、蜂鳴器和LED燈,達(dá)到智能操控照明系統(tǒng),并用PROTEL 99SE軟件對原理圖和電路板的制作。這個(gè)主要是對光照的控制用單片機(jī)
    發(fā)表于 11-19 07:15

    什么是C語言標(biāo)準(zhǔn)

    ? 1、C 語言標(biāo)準(zhǔn)什么是 C 語言標(biāo)準(zhǔn)呢? 我們生活的現(xiàn)實(shí)世界,就是由各種
    發(fā)表于 12-15 09:10

    ESP8266 NODEMCU是怎樣獲取互聯(lián)網(wǎng)上面時(shí)間服務(wù)器標(biāo)準(zhǔn)時(shí)間的呢

    ESP8266 NODEMCU是怎樣獲取互聯(lián)網(wǎng)上面時(shí)間服務(wù)器標(biāo)準(zhǔn)時(shí)間的呢?其城訓(xùn)代碼該怎樣去編寫呢?
    發(fā)表于 02-15 06:43

    A5358標(biāo)準(zhǔn)時(shí)序電路圖

    A5358標(biāo)準(zhǔn)時(shí)序電路圖
    發(fā)表于 07-03 12:30 ?1007次閱讀
    A5358<b class='flag-5'>標(biāo)準(zhǔn)時(shí)</b>序電路圖

    北京標(biāo)準(zhǔn)時(shí)間校對軟件1.7實(shí)用工具應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是北京標(biāo)準(zhǔn)時(shí)間校對軟件1.7免費(fèi)下載。
    發(fā)表于 09-03 08:00 ?4次下載
    北京<b class='flag-5'>標(biāo)準(zhǔn)時(shí)間</b>校對軟件1.7實(shí)用工具應(yīng)用程序免費(fèi)下載

    VRJAM和Sansar合作創(chuàng)建了VR世界中最大的獨(dú)立音樂和藝術(shù)節(jié)

    HTC的Viveport為用戶免費(fèi)贈(zèng)送今年的Lost Horizon的音樂節(jié)。該活動(dòng)將于本周末從周六下午3點(diǎn)(太平洋標(biāo)準(zhǔn)時(shí)間上午7點(diǎn))到周日凌晨3點(diǎn)(太平洋標(biāo)準(zhǔn)時(shí)間下午7點(diǎn),仍在周六)舉行。
    的頭像 發(fā)表于 07-06 16:39 ?1759次閱讀

    獲取網(wǎng)絡(luò)標(biāo)準(zhǔn)時(shí)間的源代碼下載

    獲取網(wǎng)絡(luò)標(biāo)準(zhǔn)時(shí)間的源代碼下載
    發(fā)表于 06-07 16:15 ?1次下載

    nodemcu解析服務(wù)器文件,實(shí)用經(jīng)驗(yàn)帖 ESP8266 NODEMCU 獲取互聯(lián)網(wǎng)上面時(shí)間服務(wù)器的標(biāo)準(zhǔn)......

    實(shí)用經(jīng)驗(yàn)帖 ESP8266 NODEMCU 獲取互聯(lián)網(wǎng)上面時(shí)間服務(wù)器的標(biāo)準(zhǔn)時(shí)間能少用原件盡量少用,所以就不用時(shí)間模塊,直接用NODEMCU獲取標(biāo)準(zhǔn)時(shí)間。硬件:NODEMCU 一塊軟件:
    發(fā)表于 12-17 18:00 ?0次下載
    nodemcu解析服務(wù)器文件,實(shí)用經(jīng)驗(yàn)帖 ESP8266 NODEMCU 獲取互聯(lián)網(wǎng)上面<b class='flag-5'>時(shí)間</b>服務(wù)器的<b class='flag-5'>標(biāo)準(zhǔn)</b>......

    嵌入式代碼如何解決時(shí)間問題、編碼問題

    UTC時(shí)間(Universal Time Coordinated, 世界標(biāo)準(zhǔn)時(shí)間或世界協(xié)調(diào)時(shí)間),以原子時(shí)長為基礎(chǔ),在時(shí)刻上盡量接近于世界時(shí)的一種
    發(fā)表于 11-14 15:46 ?712次閱讀

    MM32SPIN0280內(nèi)部時(shí)鐘捕獲外部HSE時(shí)鐘

    對一段標(biāo)準(zhǔn)時(shí)間內(nèi)的被測信號(hào)的上升沿?cái)?shù)量進(jìn)行計(jì)數(shù)。
    的頭像 發(fā)表于 05-12 13:50 ?741次閱讀
    MM32SPIN0280內(nèi)部時(shí)鐘捕獲外部HSE時(shí)鐘

    MM32SPIN0280內(nèi)部時(shí)鐘捕獲外部HSE時(shí)鐘

    對一段標(biāo)準(zhǔn)時(shí)間內(nèi)的被測信號(hào)的上升沿?cái)?shù)量進(jìn)行計(jì)數(shù)。
    的頭像 發(fā)表于 05-23 15:49 ?926次閱讀
    MM32SPIN0280內(nèi)部時(shí)鐘捕獲外部HSE時(shí)鐘

    【京準(zhǔn)】標(biāo)準(zhǔn)時(shí)鐘系統(tǒng):精確、可靠的時(shí)間計(jì)量工具

    【京準(zhǔn)】標(biāo)準(zhǔn)時(shí)鐘系統(tǒng):精確、可靠的時(shí)間計(jì)量工具
    的頭像 發(fā)表于 06-04 11:26 ?1018次閱讀

    北斗衛(wèi)星同步時(shí)鐘系統(tǒng):精準(zhǔn)時(shí)間的秘密

    辦公樓中,所有的電腦、時(shí)鐘甚至是樓宇的自動(dòng)化系統(tǒng),都顯示著同一個(gè)時(shí)間。這個(gè)時(shí)間均來源于北斗衛(wèi)星同步時(shí)鐘系統(tǒng)。這個(gè)系統(tǒng)由一個(gè)母鐘(主時(shí)鐘)和一堆子鐘組成,母鐘負(fù)責(zé)發(fā)送標(biāo)準(zhǔn)時(shí)間信號(hào),而子鐘則負(fù)責(zé)接收并
    的頭像 發(fā)表于 12-03 14:19 ?253次閱讀
    北斗衛(wèi)星同步時(shí)鐘系統(tǒng):精<b class='flag-5'>準(zhǔn)時(shí)間</b>的秘密
    主站蜘蛛池模板: 色宅男午夜电影网站| 手机看片国产日韩欧美| 国产午夜伦鲁鲁| 成人性视频全过程| BLACKED太粗太长| 99精品网站| 97亚洲狠狠色综合久久久久| 曰本xxⅹ孕妇性xxx| 又黄又爽又无遮挡在线观看免费| 亚洲精品久久久无码| 亚洲精品久久久久AV无码| 亚洲AV无码国产精品午夜久久| 无码国产成人777爽死在线观看| 日韩精品一区二区中文| 热综合一本伊人久久精品| 千禧金瓶梅快播| 日本久久精品毛片一区随边看| 祺鑫WRITEAS流出来了| 热久久视久久精品2015| 日本女人下面毛茸茸| 日日夜夜天天操| 天美传媒在线完整免费观看网站| 日韩中文亚洲欧美视频二| 色婷婷综合久久久中文字幕 | 久久精品一本到东京热| 紧缚束缚调教丨vk| 久久超碰国产精品最新| 久久久久久久久性潮| 久久香蕉电影| 免费一区二区三区久久| 女人被弄到高潮叫床免| 麒麟色欧美影院在线播放| 色欲AV无码乱码精品国产| 无码乱人伦一区二区亚洲| 亚洲国产无线码在线观看| 一个人免费视频在线观看高清版| 樱桃BT在线观看| 99久久精品国产自免费| 成人天堂婷婷青青视频在线观看| 国产高清精品自在久久| 护士的下面又湿又紧10P|