Excel Вопрос: мне нужна формула даты и времени для преобразования между часовыми поясами

Я пытаюсь найти способ рассчитать продолжительность в днях между моим часовым поясом (центральным) и (тихоокеанским, горным, восточным). Просто не знаю, с чего начать. Мои критерии будут такими:

Ячейка C5:C100 будет временной меткой в ​​следующем формате: 18.03.2010 23:45, но для разных дат и времени. Ячейка D5:D100 будет соответствующим часовым поясом в текстовой форме: Pacific; Гора; Восточный; Центральный.

В ячейке F5 должна быть продолжительность в днях.

Просто не уверен, как написать формулу, чтобы дать мне то, что я ищу. Я ценю любую помощь заранее. Спасибо


person Harold Nottingham    schedule 07.04.2010    source источник


Ответы (2)


Из часовых поясов и перехода на летнее время

Ни VBA, ни VB6 не предоставляют встроенных функций для работы с часовыми поясами, средним временем по Гринвичу (GMT, также называемым UTC) или летним временем. Для работы с этими значениями необходимо использовать некоторые функции интерфейса прикладного программирования Windows (API). На этой странице описаны эти функции API и способы их использования в коде VBA.

person Marcus Leon    schedule 07.04.2010

Самый простой способ, вероятно, - это вложенная формула ЕСЛИ:

=IF(D22="Pacific",(1/24*2),IF(D22="Mountain",(1/24),IF(D22="Eastern",-(1/24),0)))

Или используя функцию LOOKUP, чтобы вернуть то же самое:

=(C5+(1/24*LOOKUP(D5,{"Central","Eastern","Mountain","Pacific"},{-2,-3,-1,0})))-C5

В качестве альтернативы вы можете создать UDF, который берет местную дату/время и вычисляет дату/время Тихого океана из текстового представления часового пояса:

Function TimeDifference(LocalTime As Range, TimeZone As Range) As Date
    Application.Volatile
    Dim TimeOffset As Long

    Select Case TimeZone
        Case "Mountain"
            TimeOffset = -1
        Case "Central"
            TimeOffset = -2
        Case "Eastern"
            TimeOffset = -3
        Case Else
            TimeOffset = 0
    End Select
    TimeDifference = (1 / 24 * TimeOffset)
End Function

Вы бы назвали это из столбца F следующим образом:

=TIMEDIFFERENCE(C5,D5)

person Lunatik    schedule 08.04.2010