Real Time Clock. get time-str, set time.
RealTimeClock.cpp@0:006ab0d7b90f, 2015-06-11 (annotated)
- 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?
User | Revision | Line number | New 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 |