小编bad*_*sta的帖子

为什么 "DateTime.Now.ToString("hh tt", new CultureInfo("de"))" 在不同版本的 .NET 中返回不同的结果?

我很困惑。在读到我们应该依赖内置本地化的答案后,我对以下观察结果感到惊讶:

当我跑步时

using System;
using System.Globalization;
                    
public class Program
{
    public static void Main()
    {
        Console.WriteLine(DateTime.Now.ToString("hh tt", new CultureInfo("de")));
    }
}
Run Code Online (Sandbox Code Playgroud)

根据框架和/或编译器,我得到的结果非常不同。示例基于 10:00 UTC(上午 10 点)。

  • 在try-dotnet上运行它我得到:10 vorm.
  • 在dotnetfiddle上运行它,并将“编译器”设置为 .NET 5,我得到相同的结果:10 vorm.

现在有趣的部分:

  • 在dotnetfiddle上运行它,并将“编译器”设置为 .NET 4.7.2 我得到:10
  • 在dotnetfiddle上运行它,并将“编译器”设置为Roslyn我得到:10

它变得更奇怪:我已经使用控制台应用程序在本地进行了尝试,并将示例扩展为

Console.WriteLine(DateTime.Now.ToString("hh tt", new CultureInfo("de")));
Console.WriteLine(DateTime.Now.ToString("hh tt", new CultureInfo("de-DE")));
Console.WriteLine(DateTime.Now.ToString("hh tt", new CultureInfo("fr")));
Run Code Online (Sandbox Code Playgroud)

这些是结果 - 添加了 try-dotnet 进行比较。

文化 .NET 5 .NET核心3.1 .NET核心2.0 .NET框架4.8 单核细胞增多症 尝试 dotnet
“德” 上午 10 点 …

.net c# datetime .net-core .net-5

6
推荐指数
1
解决办法
472
查看次数

标签 统计

.net ×1

.net-5 ×1

.net-core ×1

c# ×1

datetime ×1