我有一个简单的C#代码示例,它创建了一个发票的文件名:
var x = new DateTime(2022,8,26);
var invoiceNumber = 1100;
var fileName = "CustomerX-Invoice";
fileName += $"-{invoiceNumber}";
fileName += $"-{x.ToString("dd-MMM-yyyy", CultureInfo.GetCultureInfo("nl-NL"))}";
Console.WriteLine(fileName);
这在.NET Core 3.1中运行得很好。它返回一个文件名为'CustomerX-Invoice-1100-26-aug-2022'。
迁移到.NET6后,它突然在月份的缩写后面添加了一个点。现在返回的是'CustomerX-Invoice-1100-26-aug.-2022'。请注意'aug'后面的点。
当我在LINQPad7中测试时,我发现问题已经在.NET5中引入。我无法确定这是设计上的问题还是已知的错误?这可能也与区域设置'nl-NL'有关吗?例如,如果我将其更改为'en-US',则不会在月份缩写后添加点。
使用.NET6的Linqpad示例:
当然,我可以操作字符串并去掉点,但我更希望能够相信.NET会返回没有点的月份缩写。对于这里发生的情况以及如何最好地处理它,有什么建议吗?