在C#中处理UTC时间?

Leg*_*end 5 c# sql-server datetime date

我不是C#内部的专家所以这个问题实际上可能是彻头彻尾的愚蠢.如果是这样,请纠正我.我有一些从SQL服务器中取出的数据(以UTC格式).

2011-03-26 11:03:58.000
2011-03-26 11:04:25.000
...
Run Code Online (Sandbox Code Playgroud)

我在C#中解析此文件并使用以下内容:

DateTime date = DateTime.Parse(value);
Run Code Online (Sandbox Code Playgroud)

将值提取到DateTime对象中.现在,我从这个时间减去6个小时的任意时间,如下所示:

date = date.Subtract(new TimeSpan(6, 0, 0));
Run Code Online (Sandbox Code Playgroud)

最后,我将其写回另一个文件,如下所示:

output.WriteLine(date.ToString("yyyy-MM-dd HH:mm:ss.fff"));
Run Code Online (Sandbox Code Playgroud)

因为我没有进行任何隐式转换,所以输出也是UTC.我的问题是,在解析日期允许的这种加/减时间还是我需要做一些UTC到C#的特定转换才能操作时间?我很难绕过这个问题.有人请澄清一下吗?

编辑:尝试写一个简明的问题 原始日期是UTC.我想添加/减去一些时间并将其写回UTC.我想知道我是否可以直接操作解析日期或者我需要做一些转换,即明确告诉C#日期是UTC格式然后操纵它然后再告诉它写回UTC日期.

SLa*_*aks 4

这并不重要。日期就是日期,无论它位于哪个时区。除非您将其转换为不同的时区,否则 .Net 不知道也不关心它是什么时区。

如果您愿意,可以致电DateTime.SpecifyKind(value, DateTimeKind.Utc)