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