假设我有这个字符串: 如何将其转换为具有UTC时间的DateTimeOffset对象 - 表示时区为-00:00 - 即使我在特定时区的机器上运行它?
假设字符串: “2012-10-08T04:50:12.0000000”
Convert.ToDateTime(“2012-10-08T04:50:12.0000000”+“Z”);
- > DateTime d = {10/8/2012 6:50:12 AM} 我想要它 日期时间d = {10/8/2012 4:50:12 AM} 好像它会理解我希望日期尽可能简单(BTW - 我的机器在时区+02:00)
答案 0 :(得分:44)
使用DateTimeOffset.Parse(string).UtcDateTime
。
答案 1 :(得分:0)
接受的答案对我不起作用。在DateTimeOffset.Parse(string)
转换器中使用DateTimeOffset.ParseExact(string)
或.UtcDateTime
可以将DateTime
的类型正确地更改为UTC,但也可以转换时间。
要获得与原始字符串时间相同的时间DateTime
,但在UTC中使用以下命令:
DateTime dt = DateTime.ParseExact(string, "yyyy-MM-ddTHH:mm:ss.fffffff",
CultureInfo.InvariantCulture);
dt = DateTime.SpecifyKind(dt, DateTimeKind.Utc);
答案 2 :(得分:0)
source print.tcl
答案 3 :(得分:0)
我通过检查 DateTimeKind
来做到这一点。在我的函数中,有 2 种不同类型的日期时间即将到来。我想要的是从下面的函数将 UTC 时间转换为本地时间。输入参数 date
始终以 UTC 格式出现。
例如输入:2021-01-19 07:43:00 AM
和 01/07/2021 02:16:00 PM +00:00
public static DateTime GetDateTime(string date)
{
try
{
DateTime parsedDate = DateTime.Parse(date, GetCulture()); //invarient culture
if (parsedDate.Kind == DateTimeKind.Unspecified)
{
parsedDate = DateTime.SpecifyKind(parsedDate, DateTimeKind.Utc);
}
return parsedDate.ToLocalTime();
}
catch (Exception e)
{
throw;
}
}