我创建了一个包含文本框的UserForm,它将以美国东部时间为单位显示当前时间。唯一的问题是,反映的时间当然是我们国家的当前时间,所以我想把它转换成美国东部时间,这是我们时间的- 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发布于 2015-11-03 01:01:09
您需要像这样使用TimeValue函数:
txtDate.Value = Format(Now - TimeValue("12:00:00"), "mm/dd/yyyy")发布于 2015-11-03 01:04:33
一种比R3uK更复杂的方法,但我一直更喜欢使用TimeSerial()和DateSerial()来获得准确的条件设置(特别是当您需要修改多个部分的时候)。
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发布于 2017-04-16 00:58:57
如果你想在公式中使用它,那就简单多了。使用NOW()函数,然后使用TIME函数减去差值。
例如,我所在的时区比美国东部时间早9:30小时。因此,在获取EST时间时,我将使用NOW()获取我的时区中的当前日期-时间,然后使用以下公式将其减去9小时30分钟。
=NOW()-TIME(9,30,0)
享受吧!
https://stackoverflow.com/questions/33482717
复制相似问题