gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:48:10 24 4
gpt4 key购买 nike

我很困惑。已阅读 this answer我们应该依赖内置的本地化,我对以下观察感到惊讶:
当我跑

using System;
using System.Globalization;

public class Program
{
public static void Main()
{
Console.WriteLine(DateTime.Now.ToString("hh tt", new CultureInfo("de")));
}
}
根据框架和/或编译器,我得到了非常不同的结果。示例基于 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")));
    这些是结果 - 添加了 try-dotnet 以进行比较。


    文化
    .NET 5
    .NET 核心 3.1
    .NET 核心 2.0
    .NET 框架 4.8
    单核细胞增多症
    尝试 dotnet


    “德”
    上午 10 点
    10
    10
    10
    10 涡。
    10 涡。

    “de-DE”
    10
    10
    10
    10
    10 涡。
    10 涡。

    “fr”
    上午 10 点
    10
    10
    10
    上午 10 点
    上午 10 点


    在 Mono 列中,结果来自使用 Mono(Mono JIT 编译器版本 6.4.0)编译文件,然后使用 Mono 运行它。在没有 Mono 的情况下运行 .exe 会产生与第三列相同的结果。
    这是从哪里来的,是编译器或框架中的错误?它只是坏了还是设计使然?

    最佳答案

    此重大更改是 the use of the ICU Libraries on Windows instead of the NLS Libraries 的结果.
    您可以在 .net 5.0 应用程序中验证这一点,方法是将以下内容添加到项目中,以从使用 ICU 库恢复到使用 NLS 库:

    <ItemGroup>
    <RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
    </ItemGroup>
    使用代码将其添加到我的测试 .Net 5.0 控制台应用程序后
    Console.WriteLine(DateTime.Now.ToString("hh tt", new CultureInfo("de")));
    输出从 11 AM 改变至 11 (在撰写本文时)。
    See here for more details .

    关于c# - 为什么 "DateTime.Now.ToString("hh tt", new CultureInfo ("de"))"在不同版本的 .Net 中返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69345101/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com