- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Can SAS convert time from EST to GMT accounting for daylight saving? Or do I have to incorporate daylight saving days manually?
Thanks a lot in advance!
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Here is a helpful link:
http://listserv.uga.edu/cgi-bin/wa?A2=ind0711a&L=sas-l&P=8219
data _null_;
gmt = '20:05:09't;
est = gmt - (4*60*60);
pst = gmt - (7*60*60);
format _all_ time.;
put _all_;
run;
and here is another discussion:
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thanks. I saw this link earlier too. But it seems to work for daylight saving time only, in other cases we need to have est = gmt - (5*60*60) . I was wondering whether SAS can automatically identify days with DST.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
from quickly scanning the internet, it seems that there is no automatic way to calculate it.
😐
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
This seems close but you will need "date time".
do local='03feb2012:01:03:03'dt, '04jul2012:01:03:03'dt, datetime();
s = dhms(nwkdom(2,1, 3,year(datepart(local))),2,0,0);
e = dhms(nwkdom(1,1,11,year(datepart(local))),2,0,0);
adj = s le local le e;
offset = 5 + adj;
gmt = local + dhms(0,offset,0,0);
put (_all_) (=);
end;
format gmt local s e datetime20.;
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
DN gave a great response... Daylight savings time is not some difficult unknown. It occurs on the between then 2nd Sunday of March and the 1st Sunday of November, at 2:00am...
Another way to check could be to use the TimeZone class
proc groovy classpath=cp;
submit parseonly;
class DST {
static boolean isDst(String tmz) {
return TimeZone.getTimeZone(tmz).inDaylightTime(new Date())
}
}
endsubmit;
run;
data test;
declare javaobj j('DST');
j.callStaticBooleanMethod('isDst',"EST",is_dst);
put is_dst=;
run;
is_dst=0;
est = gmt - ((5-(1*is_dst))*60*60);
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Here is a file that contains timezone by zipcode, including whether dst is used in each zipcode. And, since its timezones are already shown as difference from GMT, you only need to code whether to add the hour or not based on the date. PS: its free!:
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I don;t know