Время (SQL Server or VB)

User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Время (SQL Server or VB)

Post by katit »

Надо решить следующую задачу:

Определить сколько сейчас времени в "US Central Time" на любой машине в мире.

Использовать SQL Server или VB6

В SQL Server есть GetUTCDate and GetDate
а как быть с летним временем?
Слiн
Уже с Приветом
Posts: 1407
Joined: 07 Jan 2003 19:51
Location: НорКа

Post by Слiн »

Оно (летнее время) вроде всегда в одинаковый день наступает -- первое воскресение Апреля, и заканчивается в последнее воскресение же Октября. То есть с UTC разницу можно "высчитать", наверное.
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

ОЧЕНь ЛЕНь самому писать :oops:

может есть у кого кусок похожий?

Может все-таки не надо все эти проверки?
В .NET все с полтыка делается :|
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Слiн wrote:Оно (летнее время) вроде всегда в одинаковый день наступает -- первое воскресение Апреля, и заканчивается в последнее воскресение же Октября. То есть с UTC разницу можно "высчитать", наверное.


Вы что ?
Там сложные правила
и в разных странах по разному
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
Слiн
Уже с Приветом
Posts: 1407
Joined: 07 Jan 2003 19:51
Location: НорКа

Post by Слiн »

Dmitry67 wrote:
Слiн wrote:Оно (летнее время) вроде всегда в одинаковый день наступает -- первое воскресение Апреля, и заканчивается в последнее воскресение же Октября. То есть с UTC разницу можно "высчитать", наверное.


Вы что ?
Там сложные правила
и в разных странах по разному


В разных странах как это забота getUTCTime() знать
А с UTC у Central летом разница -7, а зимой -- 6(*) и переход лета/зимы в центральном времени всегда в одни и те же воскресения. Иначе телевизор бы как знал?


(*) или наоборот
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

Нагуглил вот: :D

Code: Select all

DECLARE @ActiveTimeBias binary(8)
DECLARE @Bias binary(8)
EXECUTE master..xp_regread
        'HKEY_LOCAL_MACHINE'
       ,'SYSTEM\CurrentControlSet\Control\TimeZoneInformation'
       ,'ActiveTimeBias', @ActiveTimeBias OUTPUT
EXECUTE master..xp_regread
        'HKEY_LOCAL_MACHINE'
       ,'SYSTEM\CurrentControlSet\Control\TimeZoneInformation'
       ,'Bias', @Bias OUTPUT
IF @ActiveTimeBias <> @Bias
 PRINT 'Daylight SavingsTime - clock set forward 1 hour'
ELSE
 PRINT 'Standard Time - clock not set forward'


Теперь вопрос в студию:
Какие права у SQL Server пользователя должны быть чтобы это работало?
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Мне почему то кажется что при любых неизвращенных


А вообще все это глубоко неправильно
Вель правительство любой страны может издать указ и изменить правила
Следовательно надо коннектится к какому нибудь web service, который предоставит актуальную информацию на эту тему :)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

Ладно, секрет фирмы:

Умный FedEx API хочет время в Central Time

Я все хотел "user-friendly" сделать, чтобы пользователь указал свое время, а я перевел в Central Time. Тем более что все происходит только в Америке. Т.е. и час тот не сильная проблема.
Но тут меня осенилo что непонятно как у них будет сервер настроен. И будет-ли там "daylight savings" настроено?

И приписал я в UI "(Central Time)". И пошли они... :roll:
User avatar
YellowMan
Уже с Приветом
Posts: 1099
Joined: 30 Sep 1999 09:01
Location: Bryansk,RUSSIA >> Dublin, Ireland

Post by YellowMan »

Не знаю, может пригодиться - я по Европе вот это пользую

Code: Select all

/*
LOCAL2UTC TIME FUNCTION BASED ON
The Ninth European Parliament and Council Directive on Summer Time Arrangements

1998 March 29 to October 25
1999 March 28 to October 31
2000 March 26 to October 29
2001 March 25 to October 28
2002 March 31 to October 27
2003 March 30 to October 26
2004 March 28 to October 31
2005 March 27 to October 30
2006 March 26 to October 29
2007 March 25 to October 28


*/


Даты в базе, понятное дело все в UTC - а иначе потом голову сломаешь разбираться что где...
Удачи@С.Смирнов

Return to “Вопросы и новости IT”