首页 > 解决方案 > DateTime.TryParse 在 Linux 和 Windows 上的行为不同

问题描述

我试图了解 DateTime.TryParse 如何在 .NET Core 的不同环境中工作

假设我调用了两个方法

DateTime.TryParse("08-04-2020", new CultureInfo("da-DK"), DateTimeStyles.None, out var res)
DateTime.TryParse("08/04/2020", new CultureInfo("da-DK"), DateTimeStyles.None, out var res)

当我在 Linux (docker) 上运行它时,第一种方法返回 false,第二种方法返回 true。当我在 Windows 上运行它时,这两种方法都返回 true。

我在 Linux 上检查了 da-DK 文化中 CultureInfo.DateTimeFormat.DateSeparator 的默认值是“/”,这可能就是为什么它只为第二种方法返回 true 的原因。但在 Windows 上,此分隔符的默认值为“-”,因此第二种方法应返回 false。为什么它返回true?看起来日期分隔符仅在 Linux 环境中被考虑在内。

标签: c#linuxwindowsdocker.net-core

解决方案


推荐阅读