为什么 Excel 的 now() 函数根据所使用的设备/浏览器返回不同的时间?

为什么 Excel 的 now() 函数根据所使用的设备/浏览器返回不同的时间?

我正在使用当前时间在 Excel 中运行“实时”计算=NOW()。Excel 文件保存在我的 OneDrive 中。当我将 Excel 工作表嵌入网页时,有时它会显示本地(系统)时间,有时它会显示 UTC 时间。这似乎取决于所使用的设备或浏览器。如果我从 Windows 计算机访问网站,时间将显示为系统时间。如果我从 iPhone 或 Mac 计算机查看它,它会显示 UTC 时间。有没有办法强制它使用 UTC 时间(首选),或者强制它使用本地系统时间?两者都可以工作,但需要保持一致才能使我的计算正确?由于这是嵌入的,所以不能有指向外部站点或宏的链接。另外我要说的是,我不在乎用户处于哪个时区,只要所有人处理的时间都相同即可。我已经创建了一篇博客文章来展示这个问题。

https://currentawarenessnaples.blogspot.com/2023/09/blog-post_25.html

我正在使用 Excel 生成的 iframe 代码来嵌入它。

答案1

此代码适用于 Excel 365 VBA

Option Explicit

Sub sbTest()
 MsgBox GetUTCTime()
End Sub

Public Function GetUTCTime() As Date

' https://599cd.com/blog/display-article.asp?ID=1398

    Dim XMLHTTP As Object
    Dim ResponseText As String
    Dim MyURL As String
    Dim L As Long, S As String
    
    MyURL = "http://worldtimeapi.org/api/ip.txt"
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "GET", MyURL, False
    XMLHTTP.send
    ResponseText = XMLHTTP.ResponseText
    ResponseText = Replace(ResponseText, Chr(10), vbNewLine)
    Set XMLHTTP = Nothing
    
    S = ResponseText
    L = InStr(S, "utc_datetime:")
    S = Right(S, Len(S) - L + 1)
    S = Left(S, 33)
    S = Mid(S, 20, 2) & "/" & Mid(S, 23, 2) & "/" & Mid(S, 15, 4) & " " & Right(S, 8)

    GetUTCTime = CDate(S)
    
End Function

相关内容