获取等效于静态 DateTime 的 UTC [重复]

Posted

技术标签:

【中文标题】获取等效于静态 DateTime 的 UTC [重复]【英文标题】:Get UTC equivalent of static DateTime [duplicate] 【发布时间】:2018-06-25 14:00:53 【问题描述】:

我需要在这里做的很简单,但出于某种原因,我只是对此一无所知,需要一些关于如何正确做的保证。

我正在尝试确定明天太平洋时间上午 5 点的 UTC 时间。我试图在不依赖服务器时间的情况下执行此操作,因为我无法知道这是什么时区。

我只需要对以下内容进行全面检查。这是最好的方法吗?我会遇到服务器时间关闭的问题吗?这会给我一个准确的表示明天凌晨 5 点的 UTC 吗?

DateTime datetime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.AddDays(1).Day, 5, 0, 0); //5AM tomorrow
TimeZoneInfo pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
DateTime pstTime = TimeZoneInfo.ConvertTimeToUtc(datetime, pstZone);

TIA

【问题讨论】:

使用UtcNow 而不是Now ***.com/questions/246498/… 明天是什么意思?明天在哪个时区? 您的 DateTime.Now 年、月和日值都取决于执行代码的机器的时区。试图找到“明天”时可能会发生各种包装。 @AdamBrown 明天太平洋标准时间 【参考方案1】:

您的代码实际上缺少一些细节。基本上,方法是:

    现在采用 UTC 将其转换为 pst。 以“今天”为例 添加一天以获得“明天” 增加 5 小时才能到凌晨 5 点。 转换回 UTC

代码:

static void Main(string[] args)

     var utcNow = DateTime.UtcNow;
     TimeZoneInfo pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
     var pstNow = TimeZoneInfo.ConvertTimeFromUtc(utcNow, pstZone);

     DateTime targetPstTime = pstNow.Date.AddDays(1).AddHours(5);

     DateTime utcAnswer = TimeZoneInfo.ConvertTimeToUtc(targetPstTime, pstZone);

     Console.WriteLine(utcAnswer);
     Console.ReadKey();

 

【讨论】:

谢谢,这正是我需要的!感谢您对我的耐心。

以上是关于获取等效于静态 DateTime 的 UTC [重复]的主要内容,如果未能解决你的问题,请参考以下文章

获取特定历史版本的 git 等效于 hg update 是啥? [复制]

PHP 5.2 等效于后期静态绑定(新静态)?

如何将 UTC DateTimeOffset 转换为使用系统时区的 DateTime

Cache.Add 绝对过期 - 是不是基于 UTC?

Python 将一个已知的utc时间转换为东八区时间

作业11——datetime处理日期和时间