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

Dependencies:   StrLib

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?

UserRevisionLine numberNew 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