我有以下代码:
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不一样?
我认为这与这个 Github 问题有关。
我快速查看了 Centos 操作系统,发现那里有 ICU 未设置 将
作为PersianCalendar
的默认日历。所以通过 默认情况下,它使用fa-IR
作为默认日历。 您可以通过手动设置来轻松解决此问题GregorianCalendar
作为创建的文化对象中的默认日历。PersianCalendar
也来自此支持的发行版页面;
所以,这看起来像是 ICU 问题而不是 .NET 问题。您始终可以为此下表是当前支持的 .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。