我一直无法理解为什么恢复的日期时间字符串的值与其原始值不同。我正在将字符串写入通用日期时间(格式为“u”,因此它的末尾有一个“z”),但是当它恢复时,它相差一小时。我正在使用“u”来防止这种事情发生。谁能告诉我为什么不同?
我需要一个好的字符串表示,因为我将在 5 个不同的时区使用代码。
程序:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("es-CR");
DateTime min = DateTime.MinValue;
Console.Write("Min value date: ");
Console.WriteLine(min);
Console.Write("String: ");
string str = min.ToString("u");
Console.WriteLine(str);
DateTime dt = DateTime.Parse(str);
Console.Write("Restored Date: ");
Console.WriteLine(dt);
Console.ReadLine();
}
}
}
输出是:
Min value date: 01/01/0001 12:00:00 a.m.
String: 0001-01-01 00:00:00Z
Restored Date: 01/01/0001 01:00:00 a.m.
编辑:尝试哥斯达黎加文化的选项。
最佳答案
当您解析通用 DateTime 字符串时,它是否使用您本地的时区?您可以使用方法 ToUniversalTime() 和 ToLocalTime() 来回转换。此外,如果您将时区偏移量放在“Z”之后,这将帮助您转换为正确的时区。
布莱恩
关于c# - DateTime.Parse 关闭一小时。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682255/