使用C#,将日期时间从已知时区转换为UTC

使用C#,将日期时间从已知时区转换为UTC,c#,datetime,utc,C#,Datetime,Utc,有大量信息显示了如何将以UTC表示的DateTime对象转换为特定时区以进行输出 但是,例如,如果已知DateTime对象表示为澳大利亚东部标准时间,我将如何将其转换为新的DateTime对象,其中该对象表示为UTC 我看到有一个.ToUniversalTime方法,但它假设源以本地时间表示,不允许您指定源时区。根据Jeremy Lakeman的回答,我详细介绍了从澳大利亚东部标准到UTC时间的转换。如果是本地时间,可能不需要使用datetime ParseExact,但下面是一个工作示例: v

有大量信息显示了如何将以UTC表示的DateTime对象转换为特定时区以进行输出

但是,例如,如果已知DateTime对象表示为澳大利亚东部标准时间,我将如何将其转换为新的DateTime对象,其中该对象表示为UTC


我看到有一个.ToUniversalTime方法,但它假设源以本地时间表示,不允许您指定源时区。

根据Jeremy Lakeman的回答,我详细介绍了从澳大利亚东部标准到UTC时间的转换。如果是本地时间,可能不需要使用datetime ParseExact,但下面是一个工作示例:

var timeZone = TimeZoneInfo.FindSystemTimeZoneById("E. Australia Standard Time");
var localTime = DateTime.ParseExact($"02/11/20 10:00:00", "MM/dd/yy hh:mm:ss", CultureInfo.GetCultureInfo("en-AU"));

Console.WriteLine($"your local time is: {localTime} and the UTC is {TimeZoneInfo.ConvertTimeToUtc(localTime, timeZone)}");

//output: your local time is: 2/11/2020 10:00:00 AM and the UTC is 2/11/2020 12:00:00 AM

这有用吗?您可以使用本地时间创建dateTime并指定特定时区,然后调用
ToUniversalTime
这些方法假定dateTime是本地时间。据我所知,除非是UTC或Local,否则您无法告诉该方法区域实际上是什么。DateTime仅对UTC和您的本地机器有用且定义良好。使用DateTimeOffset进行其他操作。这是否回答了您的问题?