У меня есть значение даты и времени в часовом поясе GMT. Как я могу преобразовать его в свой местный часовой пояс? Я бы ожидал, что для этого будет функция. Обратите внимание, что я не могу просто добавить или вычесть разницу из-за летнего времени. Например, функция может работать следующим образом:Конвертировать GMT datetime в local
data _null_;
gmtdatetime="17SEP14:09:42:10"dt;
localdatetime=tz2local(gmtdatetime,"GMT");
run;
я попробовал некоторые комбинации форматов и informats без везения:
data _null_;
gmtdatetime="17SEP14:09:42:10"dt;
a=put(gmtdatetime,E8601DZ20.0);*Converts the value to "2014-09-17T09:42:10Z" to indicate that it is GMT;
localdatetime=input(a,B8601DT.);*Reads the GMT value;
put localdatetime datetime.;*This still prints the value as the original GMT value...;
run;
Спасибо, Стиг
Действительно ли это GMT или UTC? (Подсказка, Великобритания использует GMST в настоящее время). Использование «Z», время Zulu означает, что вы считаете это UTC, но UTC и GMT не то же самое :) – oerkelens
Спасибо, я не знал, что между GMT и UTC существует разница. Согласно [этой странице] (http://www.timeanddate.com/time/aboututc.html) «UTC обычно упоминается как среднее время по Гринвичу (GMT), когда не учитывается точная точность в отношении долей секунды» –
Добавлено Преимущество GMT заключается в том, что вы не попадете в ловушку, думая, что ваши лондонские пользователи используют GMT. 09:40 этим утром в Лондоне было 08:40 Зулу. Вы спрашиваете у французского пользователя, в каком часовом поясе он находится, он может отвечать GMT + 1 или CET. В настоящее время он ни в одном (он в CEST, CET + 1, GMT + 2 или GMST + 1 - или просто в настоящее время в UTC + 2). Это преимущество UTC, не DST и вещи :) – oerkelens