我try 以以下格式打印日期:2024年1月14日.为了实现这一点,我编写了以下代码

@DateTime.UtcNow.ToString("MM/dd/yyyy")

但是,输出如下所示:01-14-2024.

我有点不明白为什么它会变成-

在Windows 11计算机上运行.Net Core 7 Web应用程序.

推荐答案

在日期时间格式中,斜杠有一个特殊的含义:它是一个分隔符.它会根据你的文化变成其他东西.

下面是一个例子:

var now = DateTime.UtcNow;
Console.WriteLine(now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture));
Console.WriteLine(now.ToString("MM/dd/yyyy", CultureInfo.GetCultureInfo("en-US")));
Console.WriteLine(now.ToString("MM/dd/yyyy", CultureInfo.GetCultureInfo("en-CA")));

在 compose 本文时,上述内容将打印出来

01/14/2024
01/14/2024
01-14-2024

如你所见,加拿大文化使用破折号.美国文化得到了斜杠,不变的文化也是如此.

如果您没有指定区域性(如您在问题中所做的),则将使用current区域性,这取决于您的计算机的配置.

如果对您来说足够好的话,您可以使用不变文化.

或者,您可以使用反斜杠对斜杠进行转义:

now.ToString("MM\\/dd\\/yyyy");

Csharp相关问答推荐

无法将blob发送到Azure -缺少HTTP标头异常

Blazor:计算值或保留为默认值

如何创建ASP.NET Core主机并在同一进程中运行请求

. NET 8使用COM向VB6公开

Entity Framework Core 8 dbcontext—无法以多对多关系添加某些行'

为什么Blazor值在更改后没有立即呈现?

通过条件列表删除/更新EF Core 7中的实体的有效方法

如何注册实现同一接口的多个服务并注入到控制器构造函数中

MudBlazor—MudDataGrid—默认过滤器定义不允许用户修改基本过滤器

从Blob存储中提取tar.gz文件并将提取结果上载到另一个Blob存储

C#XmlSerializer-输出控制新行的多个XML片段

NET8 Maui&;iOS:AppCenter崩溃错误

在.NET 7.0 API控制器项目中通过继承和显式调用基类使用依赖项注入

使用Entity Framework6在对象中填充列表会导致列表大多为空

.Net MAUI,在将FlyoutPage添加到容器之前,必须设置添加构造函数导致Flyout和Detail"

MSI无法将快捷方式添加到启动文件夹

为什么我的用户界面对象移动到略低于实际目标?

从MudAutoComplete打开对话框,列表仍然可见

ASP.NET核心8:app.UseStaticFiles()管道执行顺序

无法创建工具窗口(用于VBIDE、VBA的COM加载项扩展)