首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >给定本地时间中的UTC时间

给定本地时间中的UTC时间
EN

Stack Overflow用户
提问于 2015-07-09 08:04:28
回答 3查看 189关注 0票数 0

在.net中,如何在已知本地时间的情况下找到协调世界时?新加坡当地时间下午五点半,协调世界时是几点?

我有一个应用程序,需要显示从07:00‘当地时间’,从远程中心的数据。例如,我可能需要从位于新加坡的机器上从07:00开始查询来自伦敦的数据。伦敦可能是GMT或Daylight savings,在这种情况下,我的查询应该从06:00或07:00开始。

我该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2015-07-09 08:40:21

您的应用程序将在处理之前将所有传入时间转换为UTC时间。当您将时间发送回客户端时,您可以将时间转换回客户端的本地时间。

票数 0
EN

Stack Overflow用户

发布于 2015-07-09 09:04:06

  • 给定已知的本地时间,如何找出协调世界时的时间?

无论您身在何处,Utc时间都是一样的。

  • 新加坡当地时间05:30协调世界时几点?

您可以使用TimeZoneInfo.ConvertTimeFromUtc

最佳实践是在执行业务逻辑之前将所有内容转换为UTC时间。这样,您总是按UTC时间查询,而您客户的时区并不重要。

票数 0
EN

Stack Overflow用户

发布于 2015-07-09 09:34:43

由于协调世界时不包含时区信息,您可以为新加坡的时间创建一个DateTime,并在DateTimeOffset中使用该信息,然后您可以使用该UTC获取与之对应的协调时时间(和日期):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Option Infer On

Module Module1

    Sub Main()
        Dim dtFormat = "yyyy-MM-dd HH:mm:ss"

        Dim tzi = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time")
        Dim d = DateTime.UtcNow
        Dim singaporeTime = TimeZoneInfo.ConvertTimeFromUtc(d, tzi)

        Console.WriteLine("It is " & singaporeTime.ToString(dtFormat) & " in Singapore.")

        Dim st = New DateTime(2015, 7, 9, 5, 30, 0) ' local time in Singapore '
        Dim sst As New DateTimeOffset(st, tzi.GetUtcOffset(st))

        Console.WriteLine("At " & st.ToString(dtFormat) & " in Singapore it is " & sst.ToUniversalTime.ToString(dtFormat) & " UTC.")

        Console.ReadLine()

    End Sub

End Module

它现在输出

新加坡时间是2015-07-09 17:34:09。

新加坡时间2015-07-09 05:30:00 UTC 2015-07-08 21:30:00

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31311562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文