C# DateTime .ToString 在 ubuntu 和 centos 中返回不同的结果

问题描述 投票:0回答:1

我有以下代码:

public static void Main(string[] args)
{
     var dateTime = DateTimeHelper
        .ConvertPersianDateTime("12/22/1402", "09:33:12")
        .ToString("D");

     Console.WriteLine(dateTime);
}
public static DateTime ConvertPersianDateTime(string persianDate, string persianTime)
{
    var isParse = DateTime.TryParse($"{persianDate} {persianTime}",
                                new CultureInfo("fa-IR"),
                                DateTimeStyles.None, out var result);

    return isParse ? result : DateTime.Now;
}

当我在 ubuntu 服务器中运行该程序时,我得到以下结果:

Tuesday, March 12, 2024

但是当我在centos服务器中运行该程序时,我得到这样的结果:

Wednesday, December 22, 1402

为什么centos服务器的结果和ubuntu不一样?

c# datetime ubuntu centos invariantculture
1个回答
0
投票

我认为这与这个 Github 问题有关。

我快速查看了 Centos 操作系统,发现那里有 ICU 未设置

PersianCalendar
作为
fa-IR
的默认日历。所以通过 默认情况下,它使用
GregorianCalendar
作为默认日历。 您可以通过手动设置来轻松解决此问题
PersianCalendar
作为创建的文化对象中的默认日历。

也来自此支持的发行版页面;

下表是当前支持的 .NET 版本列表 CentOS Linux 7。这些版本仍然受支持,直到 .NET 版本达到支持终止或 CentOS Linux 版本 不再支持。

CentOS Linux 7 --> .NET 7, 6

CentOS Linux 8 已于 12 月 31 日提前结束生命周期 (EOL), 2021 年。有关更多信息,请参阅官方CentOS Linux EOL 页面。因此,CentOS Linux 8 不支持 .NET。

所以,这看起来像是 ICU 问题而不是 .NET 问题。您始终可以为此

提出问题,但请记住 Centos 8 不再支持 .NET 开发的操作系统。

© www.soinside.com 2019 - 2024. All rights reserved.