使用C#将系统日期转换为M/d/yyyy格式,而不考虑系统格式

r.b*_*waj 4 c# datetime date

M/d/yyyy无论使用C#的日期系统格式如何,我如何获得今天的格式日期?

DateTime.Now.Tostring('M/d/yyyy')
Run Code Online (Sandbox Code Playgroud)

仅当系统日期为格式dd/MM/yyyyM/dd/yyyy但不是格式化时才起作用yyyy-MM-dd.

例如:

如果系统日期2013-06-26,然后DateTime.Now.Tostring('M/d/yyyy')被转换成日期06-26-2013,但不06/26/2013

Tim*_*ter 8

使用CultureInfo.InvariantCulture强制执行/的日期分隔符:

DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture) 
Run Code Online (Sandbox Code Playgroud)

Ideone


Son*_*nül 5

看起来您只需要CultureInfo.InvariantCulture.ToString方法中使用第二个参数.

Console.WriteLine(DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture));
Run Code Online (Sandbox Code Playgroud)


jer*_*rry 5

如果您始终希望相同的DateTime在多个系统上生成完全相同的字符串(或者甚至由于文化更改而在同一系统上),则使用不变文化是正确的解决方案.但是,请注意,如果这是用户可见的,则您放弃了国际化的可能性(例如,如果您显示日期或月份名称,则无论用户说什么语言,它们都将使用英语).要确保不用其他日期分隔符替换斜杠,请使用单引号:

DateTime.Now.Tostring("M'/'d'/'yyyy");
Run Code Online (Sandbox Code Playgroud)

编辑:

此外,如果您的用户使用不同的日期格式,他们很可能也使用不同的时区.如果这DateTime需要在多个系统中有意义,请考虑使用DateTime.UtcNow.这也可以保护您免受因用户更改时区(例如旅行时)或夏令时/夏令时开始/结束而导致的潜在错误.如果您只是在当前实例中向用户显示字符串而不是持久化,那么DateTime.Now可能就是您想要的.然而,在那种情况下,我会问你为什么要试图弄乱他们选择的格式.