@@ -24,15 +24,19 @@ SOFTWARE.
2424#include " GeoNamesClient.h"
2525
2626GeoNamesClient::GeoNamesClient (String UserName, String lat, String lon) {
27+ updateClient (UserName, lat, lon);
28+ }
29+
30+ void GeoNamesClient::updateClient (String UserName, String lat, String lon) {
2731 myLat = lat;
2832 myLon = lon;
2933 myUserName = UserName;
3034}
3135
3236float GeoNamesClient::getTimeOffset () {
37+ datetime = " " ;
3338 WiFiClient client;
3439 String apiGetData = " GET /timezoneJSON?lat=" + myLat + " &lng=" + myLon + " &username=" + myUserName + " HTTP/1.1" ;
35-
3640 Serial.println (" Getting TimeZone Data for " + myLat + " ," + myLon);
3741 Serial.println (apiGetData);
3842 String result = " " ;
@@ -76,22 +80,117 @@ float GeoNamesClient::getTimeOffset() {
7680 JsonObject& root = json_buf.parseObject (jsonArray);
7781 String offset = (const char *)root[" dstOffset" ];
7882 // Sample time: "2018-03-19 21:22"
79- String timeDate = (const char *)root[" time" ];
80- hours = timeDate.substring (11 , 13 ).toInt ();
81- minutes = timeDate.substring (14 , 16 ).toInt ();
83+ datetime = (const char *)root[" time" ];
8284 Serial.println (" rawOffset for " + String ((const char *)root[" timezoneId" ]) + " is: " + offset);
83- Serial.println (" Geo Time: " + String (hours ) + " :" + String (minutes ));
85+ Serial.println (" Geo Date & Time: " + getMonthName ( ) + " " + getDay ( false ) + " , " + getHours () + " :" + getMinutes ( ));
8486 Serial.println ();
8587 return offset.toFloat ();
8688}
8789
88- int GeoNamesClient::getHours () {
89- return hours;
90+ String GeoNamesClient::getHours () {
91+ String rtnValue = " " ;
92+ if (datetime.length () >= 13 ) {
93+ rtnValue = datetime.substring (11 , 13 );
94+ }
95+ return rtnValue;
96+ }
97+
98+ String GeoNamesClient::getMinutes () {
99+ String rtnValue = " " ;
100+ if (datetime.length () >= 16 ) {
101+ rtnValue = datetime.substring (14 , 16 );
102+ }
103+ return rtnValue;
104+ }
105+
106+ String GeoNamesClient::getYear () {
107+ String rtnValue = " " ;
108+ if (datetime.length () > 4 ) {
109+ rtnValue = datetime.substring (0 , 4 );
110+ }
111+ return rtnValue;
90112}
91113
92- int GeoNamesClient::getMinutes () {
93- return minutes;
114+ String GeoNamesClient::getMonth00 () {
115+ String rtnValue = " " ;
116+ if (datetime.length () > 7 ) {
117+ rtnValue = datetime.substring (5 , 7 );
118+ }
119+ return rtnValue;
120+ }
121+
122+ String GeoNamesClient::getMonth (boolean zeroPad) {
123+ String rtnValue = getMonth00 ();
124+ if (zeroPad) {
125+ return rtnValue;
126+ }
127+ int month = rtnValue.toInt ();
128+ return String (month);
129+ }
130+
131+ String GeoNamesClient::getMonthName () {
132+ String rtnValue = " " ;
133+ int month = getMonth00 ().toInt ();
134+ switch (month) {
135+ case 1 :
136+ rtnValue = " Jan" ;
137+ break ;
138+ case 2 :
139+ rtnValue = " Feb" ;
140+ break ;
141+ case 3 :
142+ rtnValue = " Mar" ;
143+ break ;
144+ case 4 :
145+ rtnValue = " Apr" ;
146+ break ;
147+ case 5 :
148+ rtnValue = " May" ;
149+ break ;
150+ case 6 :
151+ rtnValue = " June" ;
152+ break ;
153+ case 7 :
154+ rtnValue = " July" ;
155+ break ;
156+ case 8 :
157+ rtnValue = " Aug" ;
158+ break ;
159+ case 9 :
160+ rtnValue = " Sep" ;
161+ break ;
162+ case 10 :
163+ rtnValue = " Oct" ;
164+ break ;
165+ case 11 :
166+ rtnValue = " Nov" ;
167+ break ;
168+ case 12 :
169+ rtnValue = " Dec" ;
170+ break ;
171+ default :
172+ rtnValue = " " ;
173+ }
174+ return rtnValue;
175+ }
176+
177+ String GeoNamesClient::getDay (boolean zeroPad) {
178+ String rtnValue = getDay00 ();
179+ if (zeroPad) {
180+ return rtnValue;
181+ }
182+ int day = rtnValue.toInt ();
183+ return String (day);
184+ }
185+
186+ String GeoNamesClient::getDay00 () {
187+ String rtnValue = " " ;
188+ if (datetime.length () > 10 ) {
189+ rtnValue = datetime.substring (8 , 10 );
190+ }
191+ return rtnValue;
94192}
95193
96194
97195
196+
0 commit comments