如何将C#datetime值转换为UTC时区

如何将C#datetime值转换为UTC时区,c#,datetime,C#,Datetime,我需要按以下格式将DateTime类型的值传递给API 2018-12-02T07:00:00.000Z //required format 但是我从Db得到的datetime值如下 2018-10-25 05:30:00.0000000 现在使用.ToString(“o”),值的格式为 2018-10-25T05:30:00.0000000 检查下面的SO链接 但未转换为所需格式 我的理解是在datetime代表UtcTimeZone中有Z。你在找这样的东西吗 var baseTim

我需要按以下格式将DateTime类型的值传递给API

2018-12-02T07:00:00.000Z //required format
但是我从Db得到的datetime值如下

2018-10-25 05:30:00.0000000
现在使用
.ToString(“o”)
,值的格式为

2018-10-25T05:30:00.0000000
检查下面的SO链接

但未转换为所需格式


我的理解是在datetime代表UtcTimeZone中有Z。

你在找这样的东西吗

var baseTime = DateTime.Parse("2018-10-25 05:30:00.0000000");
var utcTime = baseTime.ToUniversalTime();
Console.WriteLine(utcTime.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"));
您可以在这里尝试:


如果您所在地区有夏季和冬季时间,您可能需要使用更复杂的方法来正确解析初始时间,这可以在中找到。

您的数据库中的日期时间是否有关联的时区,或者它们是否已经在UTC中?@JamesThorpe否我们没有存储任何时间区域,它是本地时间,您是否需要将该本地时间作为UTC发送到API,还是需要实际发送该本地时间的UTC等效值?例如,您是否有一个问题(只是格式正确)或两个问题(也在时区之间转换)。@JamesThorpe UTC等效于该值它实际上必须以
Z
结尾,还是其他后缀,如
-08:00
有效?为什么不
.ToString(“o”)
?因为它在最后一个点后产生的数字比Op要求的数字多-这可能是一个问题,取决于API的要求。我同意上述答案,但请注意,您不需要转换为世界时,因为在基准日期时间上没有进行对话。我只是在我的德国系统上进行了尝试,它确实起到了作用,因为它解析了本地时区的初始时间(就像他在评论中提到的Op在数据库中),然后将其转换
utcTime.ToString
返回
2018-10-25T03:30:00.000Z
baseTime.ToString
在我的系统上返回
2018-10-25T05:30:00.000Z
。@ComputeFreak我怀疑(这是一个假设)OP可能不希望根据本地时间对传入的日期进行任何更改,因为它将始终取决于软件运行的当前区域设置,以及utc时间中的值。