我有一个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/上重新发布的屏幕截图:
我做错了什么以及获取DateTime对象的最简单方法是.ToShortTimeString()什么?它会在我调用时返回正确的时间?
转换还考虑了适用于当前DateTime对象所表示的时间的夏令时规则.