相关疑难解决方法(0)

为什么DateTime.ToLocalTime()没有考虑夏令时?

我有一个UTC时间字符串(我从数据库中获取,因此我无法更改格式)DateTime.UtcNow.ToString("s").我想展示一些面向用户的内容,如"上午10点".我在哪里(在英格兰),时钟最近出现了,下面的方法是一小时出来:

var timenowstring = DateTime.UtcNow.ToString("s");
var dateutc = DateTime.Parse(timenowstring).ToShortTimeString();
var datelocal = DateTime.Parse(timenowstring).ToLocalTime().ToShortTimeString();

Console.WriteLine("Utc time string: " + dateutc);
Console.WriteLine("Local time string: " + datelocal);
Run Code Online (Sandbox Code Playgroud)

两者都打印"上午9:02"实际上是10:02 AM.

这是在http://csharppad.com/上重新发布的屏幕截图:

utc和local同时显示 - 请参见右下方的系统时钟,这是正确的 更大的形象

CSharpPad要点

我做错了什么以及获取DateTime对象的最简单方法是.ToShortTimeString()什么?它会在我调用时返回正确的时间?

注意ToLocalTime()上的文档说:

转换还考虑了适用于当前DateTime对象所表示的时间的夏令时规则.

.net c# datetime

5
推荐指数
1
解决办法
4367
查看次数

标签 统计

.net ×1

c# ×1

datetime ×1