我创建了一个包含文本框的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
答案 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)
享受!