提问人:arael6 提问时间:4/29/2023 最后编辑:arael6 更新时间:5/2/2023 访问量:179
Windows 和 Linux 上的 .net 不同日期格式 (Ubuntu)
.net different date format on Windows and Linux (Ubuntu)
问:
以下代码的日期时间在 Windows 10 和 Linux (Ubuntu 22.04.2) 上看起来不同:
DateTime date1 = new DateTime(2001, 9, 1);
Console.WriteLine(date1.ToString());
Windows 日期时间格式:01.09.2001 00:00:00
Ubuntu 日期时间格式:09/01/2001 00:00:00
问:如何在 asp.net 应用程序中设置全局日期格式,而不管在运行应用程序的系统中设置的日期格式如何?
我尝试在 web.config 中设置区域性,但它没有帮助。
<system.web>
<globalization culture="pl-PL" uiCulture="pl-PL"/>
</system.web>
我尝试在 Program.cs 中设置区域性,但它也没有帮助。
builder.Services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("pl-PL", "pl-PL");
options.SupportedCultures = new[] { new CultureInfo("pl-PL", false) };
options.SupportedUICultures = new[] { new CultureInfo("pl-PL", false) };
});
编辑:我更正了代码:
var app = builder.Build();
app.UseRequestLocalization(options =>
{
options.DefaultRequestCulture = new RequestCulture("pl-PL", "pl-PL");
options.SupportedCultures = new[] { new CultureInfo("pl-PL", false) };
options.SupportedUICultures = new[] { new CultureInfo("pl-PL", false) };
});
应用上述修复程序后,日期格式与设置区域性兼容,但问题仍然存在,即尽管设置了区域性,但日期格式在 Windows 和 Linux 上仍然不同:
Windows 日期时间格式:01.09.2001 00:00:00
Ubuntu 日期时间格式:1.09.2001 00:00:00
Ubuntu 在每月 1 到 9 的月初缺少零是正常的,还是一个错误?
答:
0赞
Gustav
4/29/2023
#1
尝试指定以下项的区域性信息:ToString
DateTime date1 = new DateTime(2001, 9, 1);
System.Globalization.CultureInfo cultureInfo = System.Globalization.CultureInfo.GetCultureInfo("pl-PL");
Console.WriteLine(date1.ToString(cultureInfo));
// Output:
// 01.09.2001 00:00:00
评论
0赞
arael6
5/1/2023
您的示例有效,但我想要一个全局设置,您不必为每个变量设置 cultureInfo 参数。
0赞
Gustav
5/1/2023
明白了。不知道如何实现这一点 - 而且我没有 Linux 可以测试。
0赞
arael6
5/2/2023
#2
根据 Windows 和 Linux 之间的日期格式差异中的信息,不同系统上使用的日期格式可能存在差异是正常的。如果我们希望日期格式独立于客户端的系统,我们应该从应用程序端处理它。
评论
var app = builder.Build(); app.UseRequestLocalization(options => { options.DefaultRequestCulture = new RequestCulture("pl-PL", "pl-PL"); options.SupportedCultures = new[] { new CultureInfo("pl-PL", false) }; options.SupportedUICultures = new[] { new CultureInfo("pl-PL", false) }; });