c# - DateTime.Parse 关闭一小时。为什么?

标签 c# .net parsing datetime tostring

我一直无法理解为什么恢复的日期时间字符串的值与其原始值不同。我正在将字符串写入通用日期时间(格式为“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/

相关文章:

c# - 如何将 ListView DataTemplate 中的按钮绑定(bind)到 ViewModel 中的命令? (MVVMLight)

c# - 从 mysql 填充数据网格特定定义的列

c# - 结果 : 0x8004D00E using TransactionScope - C#

mysql - 如何使用 .NET MySql 连接器在 mariadb 中使用 DELIMITER?

java - 将包含数字的字符串解析为 INT

c# - JsonException : A possible object cycle was detected which is not supported. 这可能是由于循环或对象深度大于

c# - FileStream.Position 具有线程不安全的副作用

c# - MySQL .NET SSL 访问被拒绝异常

jquery - 将来自 json 响应的 JSON 值放入 HTML 元素

python - 用 Python 解析 XML 文件并在每个列表元素中获取字母 'u'