Real Time Clock. get time-str, set time.

Dependencies:   StrLib

Committer:
AkinoriHashimoto
Date:
Thu Jun 11 01:55:55 2015 +0000
Revision:
0:006ab0d7b90f
Child:
2:32cfa1dac5a2
Real Time Clock

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AkinoriHashimoto 0:006ab0d7b90f 1 #include "RealTimeClock.h"
AkinoriHashimoto 0:006ab0d7b90f 2
AkinoriHashimoto 0:006ab0d7b90f 3 void RealTimeClock::setSecondsRealTime()
AkinoriHashimoto 0:006ab0d7b90f 4 {
AkinoriHashimoto 0:006ab0d7b90f 5 secRT = time(NULL);
AkinoriHashimoto 0:006ab0d7b90f 6 return;
AkinoriHashimoto 0:006ab0d7b90f 7 }
AkinoriHashimoto 0:006ab0d7b90f 8
AkinoriHashimoto 0:006ab0d7b90f 9 string RealTimeClock::getHMS8()
AkinoriHashimoto 0:006ab0d7b90f 10 {
AkinoriHashimoto 0:006ab0d7b90f 11 setSecondsRealTime();
AkinoriHashimoto 0:006ab0d7b90f 12 strftime(buf, 10, "%H:%M:%S", localtime(&secRT));
AkinoriHashimoto 0:006ab0d7b90f 13 bufTmp= buf;
AkinoriHashimoto 0:006ab0d7b90f 14 return bufTmp;
AkinoriHashimoto 0:006ab0d7b90f 15 }
AkinoriHashimoto 0:006ab0d7b90f 16 string RealTimeClock::getHMS6()
AkinoriHashimoto 0:006ab0d7b90f 17 {
AkinoriHashimoto 0:006ab0d7b90f 18 setSecondsRealTime();
AkinoriHashimoto 0:006ab0d7b90f 19 strftime(buf, 8, "%H%M%S", localtime(&secRT));
AkinoriHashimoto 0:006ab0d7b90f 20 bufTmp= buf;
AkinoriHashimoto 0:006ab0d7b90f 21 return bufTmp;
AkinoriHashimoto 0:006ab0d7b90f 22 }
AkinoriHashimoto 0:006ab0d7b90f 23
AkinoriHashimoto 0:006ab0d7b90f 24 string RealTimeClock::getYMD8()
AkinoriHashimoto 0:006ab0d7b90f 25 {
AkinoriHashimoto 0:006ab0d7b90f 26 setSecondsRealTime();
AkinoriHashimoto 0:006ab0d7b90f 27 strftime(buf, 10, "%y/%m/%d", localtime(&secRT));
AkinoriHashimoto 0:006ab0d7b90f 28 bufTmp= buf;
AkinoriHashimoto 0:006ab0d7b90f 29 return bufTmp;
AkinoriHashimoto 0:006ab0d7b90f 30 }
AkinoriHashimoto 0:006ab0d7b90f 31 string RealTimeClock::getYMD6()
AkinoriHashimoto 0:006ab0d7b90f 32 {
AkinoriHashimoto 0:006ab0d7b90f 33 setSecondsRealTime();
AkinoriHashimoto 0:006ab0d7b90f 34 strftime(buf, 8, "%y%m%d", localtime(&secRT));
AkinoriHashimoto 0:006ab0d7b90f 35 bufTmp= buf;
AkinoriHashimoto 0:006ab0d7b90f 36 return bufTmp;
AkinoriHashimoto 0:006ab0d7b90f 37 }
AkinoriHashimoto 0:006ab0d7b90f 38
AkinoriHashimoto 0:006ab0d7b90f 39
AkinoriHashimoto 0:006ab0d7b90f 40 bool RealTimeClock::setRealTime(string str)
AkinoriHashimoto 0:006ab0d7b90f 41 {
AkinoriHashimoto 0:006ab0d7b90f 42 long now= A2I(str, 10);
AkinoriHashimoto 0:006ab0d7b90f 43 now += 3600* 9; // + JST 9hour.
AkinoriHashimoto 0:006ab0d7b90f 44 // 1,427,597,183(ISO 8601形式: 2015/03/29 02:46:23Z)
AkinoriHashimoto 0:006ab0d7b90f 45 // 2,147,483,647秒を経過した (2038/01/19 03:14:07)
AkinoriHashimoto 0:006ab0d7b90f 46 if(!(1427597183<now && now<2147483600))
AkinoriHashimoto 0:006ab0d7b90f 47 return false;
AkinoriHashimoto 0:006ab0d7b90f 48 if(now == -1)
AkinoriHashimoto 0:006ab0d7b90f 49 return false;
AkinoriHashimoto 0:006ab0d7b90f 50
AkinoriHashimoto 0:006ab0d7b90f 51 // now is in range of appropriate time.
AkinoriHashimoto 0:006ab0d7b90f 52 setRealTime(now);
AkinoriHashimoto 0:006ab0d7b90f 53 return true;
AkinoriHashimoto 0:006ab0d7b90f 54 }
AkinoriHashimoto 0:006ab0d7b90f 55
AkinoriHashimoto 0:006ab0d7b90f 56 void RealTimeClock::setRealTime(long now)
AkinoriHashimoto 0:006ab0d7b90f 57 {
AkinoriHashimoto 0:006ab0d7b90f 58 set_time(now);
AkinoriHashimoto 0:006ab0d7b90f 59 return;
AkinoriHashimoto 0:006ab0d7b90f 60 }
AkinoriHashimoto 0:006ab0d7b90f 61
AkinoriHashimoto 0:006ab0d7b90f 62 // End of File