C# 使用C将系统日期转换为M/d/yyyy格式,与系统格式无关#

C# 使用C将系统日期转换为M/d/yyyy格式,与系统格式无关#,c#,date,datetime,C#,Date,Datetime,无论使用C#的日期的系统格式如何,我如何以M/d/yyyy格式获取今天的日期 仅当系统日期的格式为dd/MM/yyyy或M/dd/yyyy时有效,但不适用于yyyy-MM-dd格式 例如: 如果系统日期为2013-06-26,则DateTime.Now.Tostring('M/d/yyyy')正在将日期转换为06-26-2013,而不是在06/26/2013中使用CultureInfo.InvariantCulture强制执行//code>作为日期分隔符: DateTime.Now.ToStri

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

仅当系统日期的格式为
dd/MM/yyyy
M/dd/yyyy
时有效,但不适用于
yyyy-MM-dd
格式

例如:


如果系统日期为
2013-06-26
,则
DateTime.Now.Tostring('M/d/yyyy')
正在将日期转换为
06-26-2013
,而不是在
06/26/2013

中使用
CultureInfo.InvariantCulture
强制执行
//code>作为日期分隔符:

DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture) 

看起来您只需要在
.ToString
方法中用作第二个参数

Console.WriteLine(DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture));
像这样:

DateTime.Now.Tostring("M'/'d'/'yyyy");
apostrofe强制
ToString()
方法使用您指定的分隔符


但是,我会让用户选择一个区域性并使用该区域性的默认格式。

如果您总是希望相同的日期时间在多个系统上(甚至由于区域性更改在同一系统上)生成完全相同的字符串,则使用不变区域性是正确的解决方案。但是,请注意,如果这是用户可见的,您就放弃了国际化的可能性(例如,如果您显示日期或月份名称,则无论用户使用何种语言,它们都将使用英语)。要仅确保斜杠不被另一个日期分隔符替换,请使用单引号:

DateTime.Now.Tostring("M'/'d'/'yyyy");

编辑: 此外,如果您的用户使用不同的日期格式,则很有可能他们也使用不同的时区。如果这个代码> DATEIME/<代码>需要跨多个系统有意义,请考虑使用<强> < /强>。这还可以防止由于用户更改时区(例如旅行时)或夏令时/夏令时开始/结束而导致的潜在错误。如果您只是在当前实例中向用户显示字符串,而不是持久化它,
DateTime.Now
可能就是您想要的。然而,在这种情况下,我会问你为什么要尝试弄乱他们选择的格式

DateTime.Now.Tostring("M'/'d'/'yyyy");