討論區快速選單
知識庫快速選單
討論區最近新進100則主題 程式設計俱樂部Facebook粉絲團
[ 回上頁 ] [ 討論區發言規則 ]
RTC數值的比較
更改我的閱讀文章字型大小
作者 : timohu(曉諭) 人氣指數超過10000點
[ 貼文 148 | 人氣 23056 | 評價 100 | 評價/貼文 0.68 | 送出評價 11 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2017/11/7 上午 10:31:27
目前使用一個RTC IC來當作時間的顯示跟紀錄休眠時間

每次關機時~我會把目前的數據紀錄在EEPROM
然後開機後想比較上次關機時間距離目前RTC顯示時間的間隔

單純的想法是想把時間全部轉換成秒的單位再做相減
請問有什麼函式可以使用嗎??

因為每個月的日數不一樣~在跨日的情境下~function似乎不太好簡化??

RTC data format是7個BCD碼(年 月 日 星期 時 分 秒)

作者 : ice_emissary(燃燒的大地) 貼文超過200則
[ 貼文 357 | 人氣 0 | 評價 1730 | 評價/貼文 4.85 | 送出評價 16 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人timohu註記此篇回應為很有道理 2017/11/7 上午 10:49:27
>單純的想法是想把時間全部轉換成秒的單位再做相減
>請問有什麼函式可以使用嗎??

這也是我愛用的方法,用 UNIX time stamp 來處理、儲存、特別是計算時間時最好用了!

mktime,可把日期時間轉成 time_t;
localtime、gmtime,可把 time_t 轉成日期時間。
全部都是 C 標準函式庫的東西(time.h)。
作者 : cxxlman(CxxlMan) C++優秀好手貼文超過1000則
[ 貼文 1012 | 人氣 3227 | 評價 1260 | 評價/貼文 1.25 | 送出評價 27 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人timohu註記此篇回應為很有道理 2017/11/7 下午 06:36:31
C++11 好像也有提供這方面的功能,各平台皆適用,去找來看看
作者 : kennytsai(Kenny) C++卓越專家貼文超過500則
[ 貼文 720 | 人氣 2903 | 評價 2840 | 評價/貼文 3.94 | 送出評價 140 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/8/20 上午 12:42:14
<單純的想法是想把時間全部轉換成秒的單位再做相減、請問有什麼函式可以使用嗎??>
先簡單回答這個問題,呼叫標準函式 time(NULL); 回傳的就是秒(since 1970/1/1)

進階的說明如下:
1. 設定了 RTC 時間後,只要該IC能持續供電,就能隨時提供正確的時間(我們先忽略誤差,但簡短的提示,每星期差距5秒內,已經屬很高的水準)
2. 如果你設定的是台灣時間,這相當直覺,但以國際化的角度來看,台灣因地理位置的關係,對應到國際時間為UTC+8,台灣時間當然可以轉換到其他國家的時間,但重要的是必須清楚說明,目前RTC的時間==UTC+8(也就是Taipei時間),未來才能正確轉換。如果要更進一步了解,可參考<locale.h>
3. 一般來說,系統僅在開機時,讀取RTC的「硬體時間」、進行首次校時,接著就由系統自己維持「系統時間」,Windows, Linux 都是這樣,也因此,如果你的電腦沒有啟動NTP,就很容易出現時鐘越來越慢(或快)。C語言的<time.h>函式、使用的是系統時間,如果再深入一點說,其實,就算是作業系統自己提供的時間函式,除非特別標明「硬體」、一般都來自系統(相當於軟體的)時間。
4. 如果你已經能讀寫RTC晶片,其實我建議你,查找一下該晶片有無未使用的暫存器,例如Alarm, 或第二組時間等,會這樣建議的原因其實很簡單:A: 將時間相關的資料、寫入RTC,還算直覺。B: 寫EEPROM將動用到另一個硬體,複雜度會稍微提高。
5. 最後要再次提醒,當你在關機時呼叫time()時,你得到的是系統給你的時間,如果你的系統並未在剛啟動時,先利用RTC校時,則time()的回傳值,跟RTC的內容完全無關,還有,就算你一開始有校時,但在關機前,RTC跟系統的誤差可能已經很大了,這表示,你可以先「再次執行RTC to 系統校時」後才取time(),也可直接取RTC(相當於略過系統、直接取硬體時間)操作,總之,切記 RTC Time 不等於 System Time。
6. 秒轉年月日,很簡單,詳情請查<time.h>的函式。
Good Luck.
 板主 : simula
 > C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C++
1 Raymond 13050 
2 青衫 4760 
3 simula 4690 
4 coco 4030 
5 白老鼠(Gary) 3670 
6 ozzy 2540 
7 Ben 2250 
8 Anderson 1960 
9 windblown 1650 
10 Kenny 1560 
C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.1425781