Real Time Clock. get time-str, set time.
RealTimeClock.cpp@5:82e566457502, 2015-11-24 (annotated)
- Committer:
- AkinoriHashimoto
- Date:
- Tue Nov 24 07:09:30 2015 +0000
- Revision:
- 5:82e566457502
- Parent:
- 4:d1c394cd7b63
- Child:
- 6:605138b5eef6
Add setTimeZone(),; Adj. to treat Epoch time.
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 | 5:82e566457502 | 3 | RealTimeClock::RealTimeClock(TimeZone tz) |
AkinoriHashimoto | 5:82e566457502 | 4 | { |
AkinoriHashimoto | 5:82e566457502 | 5 | setTimeZone(tz); |
AkinoriHashimoto | 5:82e566457502 | 6 | } |
AkinoriHashimoto | 5:82e566457502 | 7 | RealTimeClock::RealTimeClock(float hour) |
AkinoriHashimoto | 5:82e566457502 | 8 | { |
AkinoriHashimoto | 5:82e566457502 | 9 | setTimeZone(hour); |
AkinoriHashimoto | 5:82e566457502 | 10 | } |
AkinoriHashimoto | 5:82e566457502 | 11 | |
AkinoriHashimoto | 0:006ab0d7b90f | 12 | void RealTimeClock::setSecondsRealTime() |
AkinoriHashimoto | 0:006ab0d7b90f | 13 | { |
AkinoriHashimoto | 0:006ab0d7b90f | 14 | secRT = time(NULL); |
AkinoriHashimoto | 5:82e566457502 | 15 | secRT += this->offsetTimeZone; |
AkinoriHashimoto | 0:006ab0d7b90f | 16 | return; |
AkinoriHashimoto | 0:006ab0d7b90f | 17 | } |
AkinoriHashimoto | 0:006ab0d7b90f | 18 | |
AkinoriHashimoto | 0:006ab0d7b90f | 19 | string RealTimeClock::getHMS8() |
AkinoriHashimoto | 0:006ab0d7b90f | 20 | { |
AkinoriHashimoto | 0:006ab0d7b90f | 21 | setSecondsRealTime(); |
AkinoriHashimoto | 0:006ab0d7b90f | 22 | strftime(buf, 10, "%H:%M:%S", localtime(&secRT)); |
AkinoriHashimoto | 0:006ab0d7b90f | 23 | bufTmp= buf; |
AkinoriHashimoto | 0:006ab0d7b90f | 24 | return bufTmp; |
AkinoriHashimoto | 0:006ab0d7b90f | 25 | } |
AkinoriHashimoto | 0:006ab0d7b90f | 26 | string RealTimeClock::getHMS6() |
AkinoriHashimoto | 0:006ab0d7b90f | 27 | { |
AkinoriHashimoto | 0:006ab0d7b90f | 28 | setSecondsRealTime(); |
AkinoriHashimoto | 0:006ab0d7b90f | 29 | strftime(buf, 8, "%H%M%S", localtime(&secRT)); |
AkinoriHashimoto | 0:006ab0d7b90f | 30 | bufTmp= buf; |
AkinoriHashimoto | 0:006ab0d7b90f | 31 | return bufTmp; |
AkinoriHashimoto | 0:006ab0d7b90f | 32 | } |
AkinoriHashimoto | 0:006ab0d7b90f | 33 | |
AkinoriHashimoto | 0:006ab0d7b90f | 34 | string RealTimeClock::getYMD8() |
AkinoriHashimoto | 0:006ab0d7b90f | 35 | { |
AkinoriHashimoto | 0:006ab0d7b90f | 36 | setSecondsRealTime(); |
AkinoriHashimoto | 0:006ab0d7b90f | 37 | strftime(buf, 10, "%y/%m/%d", localtime(&secRT)); |
AkinoriHashimoto | 0:006ab0d7b90f | 38 | bufTmp= buf; |
AkinoriHashimoto | 0:006ab0d7b90f | 39 | return bufTmp; |
AkinoriHashimoto | 0:006ab0d7b90f | 40 | } |
AkinoriHashimoto | 0:006ab0d7b90f | 41 | string RealTimeClock::getYMD6() |
AkinoriHashimoto | 0:006ab0d7b90f | 42 | { |
AkinoriHashimoto | 0:006ab0d7b90f | 43 | setSecondsRealTime(); |
AkinoriHashimoto | 0:006ab0d7b90f | 44 | strftime(buf, 8, "%y%m%d", localtime(&secRT)); |
AkinoriHashimoto | 0:006ab0d7b90f | 45 | bufTmp= buf; |
AkinoriHashimoto | 0:006ab0d7b90f | 46 | return bufTmp; |
AkinoriHashimoto | 0:006ab0d7b90f | 47 | } |
AkinoriHashimoto | 0:006ab0d7b90f | 48 | |
AkinoriHashimoto | 0:006ab0d7b90f | 49 | |
AkinoriHashimoto | 5:82e566457502 | 50 | //bool RealTimeClock::setRealTime(string str, bool JPN) |
AkinoriHashimoto | 5:82e566457502 | 51 | bool RealTimeClock::setRealTime(string str) |
AkinoriHashimoto | 0:006ab0d7b90f | 52 | { |
AkinoriHashimoto | 5:82e566457502 | 53 | // now is in range of appropriate time. |
AkinoriHashimoto | 5:82e566457502 | 54 | return setRealTime(A2I(str, 10));//, JPN); |
AkinoriHashimoto | 2:32cfa1dac5a2 | 55 | } |
AkinoriHashimoto | 2:32cfa1dac5a2 | 56 | |
AkinoriHashimoto | 5:82e566457502 | 57 | //bool RealTimeClock::setRealTime(long now, bool JPN) |
AkinoriHashimoto | 5:82e566457502 | 58 | bool RealTimeClock::setRealTime(long now) |
AkinoriHashimoto | 2:32cfa1dac5a2 | 59 | { |
AkinoriHashimoto | 5:82e566457502 | 60 | // if(JPN) now += 3600* 9; // + JST 9hour. |
AkinoriHashimoto | 0:006ab0d7b90f | 61 | // 1,427,597,183(ISO 8601形式: 2015/03/29 02:46:23Z) |
AkinoriHashimoto | 0:006ab0d7b90f | 62 | // 2,147,483,647秒を経過した (2038/01/19 03:14:07) |
AkinoriHashimoto | 0:006ab0d7b90f | 63 | if(!(1427597183<now && now<2147483600)) |
AkinoriHashimoto | 0:006ab0d7b90f | 64 | return false; |
AkinoriHashimoto | 0:006ab0d7b90f | 65 | if(now == -1) |
AkinoriHashimoto | 0:006ab0d7b90f | 66 | return false; |
AkinoriHashimoto | 0:006ab0d7b90f | 67 | set_time(now); |
AkinoriHashimoto | 3:3f5628269a53 | 68 | return true; |
AkinoriHashimoto | 0:006ab0d7b90f | 69 | } |
AkinoriHashimoto | 0:006ab0d7b90f | 70 | |
AkinoriHashimoto | 5:82e566457502 | 71 | void RealTimeClock::setTimeZone(TimeZone tz) |
AkinoriHashimoto | 5:82e566457502 | 72 | { |
AkinoriHashimoto | 5:82e566457502 | 73 | float hour= 0; |
AkinoriHashimoto | 5:82e566457502 | 74 | if(UTC || GMT) |
AkinoriHashimoto | 5:82e566457502 | 75 | hour= 0; |
AkinoriHashimoto | 5:82e566457502 | 76 | if(JST) |
AkinoriHashimoto | 5:82e566457502 | 77 | hour= +9; |
AkinoriHashimoto | 5:82e566457502 | 78 | if(EST) |
AkinoriHashimoto | 5:82e566457502 | 79 | hour= -5; |
AkinoriHashimoto | 5:82e566457502 | 80 | if(CST) |
AkinoriHashimoto | 5:82e566457502 | 81 | hour= -6; |
AkinoriHashimoto | 5:82e566457502 | 82 | if(MST) |
AkinoriHashimoto | 5:82e566457502 | 83 | hour= -7; |
AkinoriHashimoto | 5:82e566457502 | 84 | if(PST) |
AkinoriHashimoto | 5:82e566457502 | 85 | hour= -8; |
AkinoriHashimoto | 5:82e566457502 | 86 | |
AkinoriHashimoto | 5:82e566457502 | 87 | this->setTimeZone(hour); |
AkinoriHashimoto | 5:82e566457502 | 88 | |
AkinoriHashimoto | 5:82e566457502 | 89 | return; |
AkinoriHashimoto | 5:82e566457502 | 90 | } |
AkinoriHashimoto | 5:82e566457502 | 91 | void RealTimeClock::setTimeZone(float hour) |
AkinoriHashimoto | 5:82e566457502 | 92 | { |
AkinoriHashimoto | 5:82e566457502 | 93 | this->offsetTimeZone= (int)(hour* 3600); |
AkinoriHashimoto | 5:82e566457502 | 94 | |
AkinoriHashimoto | 5:82e566457502 | 95 | return; |
AkinoriHashimoto | 5:82e566457502 | 96 | } |
AkinoriHashimoto | 5:82e566457502 | 97 | |
AkinoriHashimoto | 5:82e566457502 | 98 | |
AkinoriHashimoto | 0:006ab0d7b90f | 99 | // End of File |