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

Dependencies:   StrLib

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?

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