显示当前时间(EST)

时间:2015-11-02 16:47:54

标签: excel vba excel-vba datetime userform

我创建了一个包含文本框的UserForm,该文本框将显示EST中的当前时间。唯一的问题是,反映的时间当然是我们国家的当前时间,所以我想在美国东部时间转换它,即- 12:00

Private Sub UserForm_Initialize()
If ActiveWorkbook.MultiUserEditing Then

End If

Application.ScreenUpdating = False
Application.DisplayAlerts = False
    txtDate.Value = Format(Now, "mm/dd/yyyy")


Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

3 个答案:

答案 0 :(得分:2)

您需要使用TimeValue这样的功能:

txtDate.Value = Format(Now - TimeValue("12:00:00"), "mm/dd/yyyy")

答案 1 :(得分:2)

比R3uK更复杂的方式,但我总是首选使用TimeSerial()DateSerial()来设置我的确切标准(特别是当您需要修改时间的多个部分时)。 / p>

Sub TimeToEST()

Dim ESTHour As Integer
If Hour(Now) - 12 < 0 Then
    ESTHour = 24 + Hour(Now) - 12
Else
    ESTHour = Hour(Now) - 12
End If

txtDate.Value = TimeSerial(ESTHour, Minute(Now), Second(Now))

End Sub

仅显示EST中的当前日期:

Sub DateToEST()

Dim ESTDate As Date
If Hour(Now) < 12 And Day(Now) = 1 Then
    ESTDate = Now - TimeValue("12:00:00")
ElseIf Hour(Now) < 12 Then
    ESTDate = DateSerial(Year(Now), Month(Now), Day(Now) - 1)
Else
    ESTDate = DateSerial(Year(Now), Month(Now), Day(Now))
End If

txtDate.Value = ESTDate

End Sub

答案 2 :(得分:0)

如果你想在公式中使用它,它会简单得多。 使用NOW()函数,然后使用TIME函数减去差值。

例如,我正处于美国东部时间早9点半的时区。 因此,获取EST时间,我将使用NOW()在我的时区中获取当前日期时间,然后使用以下公式从中减去9小时30分钟。

= NOW() - TIME(9,30,0)

享受!