如何基于DateTime和TimeZone偏移量获取UTC时间? - c#

我有一个datetime对象,并且我知道UTC偏移量(双精度)。如何从这两条信息中获取UTC时间?

我见过的所有示例都需要一个时区。好吧,我不知道现在的时区,也没关系。如果我的偏移量为-7,则可能是PDT,也可能是MST-这实际上无关紧要,因为两者都会产生相同的UTC。我不得不将我必须的偏移量转换为时区,以使“ ToUniversalTime”可以拉回偏移量,这看起来确实很愚蠢。

老实说,我将诉诸于仅使用以下内容:

DateTime dateTime = new DateTime(2014, 8, 6, 12, 0, 0);
Double timeZone = -7.0;
string utc = String.Format("{0}-{1}-{2}T{3}:{4}:{5}{6}:{7}", startDate.Year, startDate.Month, startDate.Day, startDate.Hour, startDate.Minute, startDate.Second, (int) Math.Floor(timeZone), (timeZone % 1) * 60);

有人可以告诉我为什么这是一个坏主意吗?

(有人可能会以重复的形式将其关闭,但我查看了其他十二个问题,但没有一个完全一样-他们都使用了TimeZoneInfo对象)。

参考方案

只需使用DateTimeOffset

TimeSpan utcOffset = TimeSpan.FromHours(timeZone);
DateTimeOffset result = new DateTimeOffset(dateTime, utcOffset);
DateTime utc = result.UtcDateTime;

要么

string utc = result.ToString("yyyy-MM-dd'T'HH:mm:ssK", CultureInfo.InvariantCulture);

尚不清楚为什么最后要将其作为字符串...

(您可能还想考虑使用我的Noda Time项目,特别是因为您可能会看到时区ID为TZDB时区...)

如何使用py.test猴子python的datetime.datetime.now? - python

我需要测试使用datetime.datetime.now()的函数。最简单的方法是什么? 参考方案 您需要monkeypatch datetime.now函数。在下面的示例中,我正在创建夹具,以后可以在其他测试中重复使用:import datetime import pytest FAKE_TIME = datetime.datetime(2020, 12,…

C#System.DateTime.Now返回在Windows中设置的自定义时间格式 - c#

C#System.DateTime.Now给我带时间的日期,但是无论我在Windows calander中设置的是什么,它都给我格式,即(am)(pm)甚至是(xyz),如何获取标准时间格式(AM / PM)而不管在Windows calander中设置的自定义时间格式? 参考方案 如果使用DateTime作为DateTime类型,则它将自动显示窗口格式。对…

如何在Python中获取UTC日期字符串? - python

我正在尝试将utc日期字符串作为“YYYYMMDD”现在,我执行以下操作:nowTime = time.gmtime(); nowDate = date(nowTime.tm_year, nowTime.tm_mon, nowTime.tm_mday) print nowDate.strftime('%Y%m%d') 我曾经做:datet…

System.DateTime.ParseExact:无法识别的格式字符串 - c#

var timestamp = DateTime.ParseExact("20140101T000000Z", "YYYYMMDDThhmmssZ", CultureInfo.InvariantCulture); System.FormatException was unhandled by user code HRe…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制