为什么DateTime.ToString("dd/MM/yyyy")会给我返回dd-MM-yyyy?

171
我希望将我的日期时间转换为格式为“dd/MM/yyyy”的字符串。
每次使用DateTime.ToString("dd/MM/yyyy")进行转换时,它会变成dd-MM-yyyy
是否需要设置某种文化信息?

执行 DateTime.ToString("dd/MM/yyyy"); - jimplode
2
我已经尝试过了,但是没有成功,问题不在于日期,而是在于“-”符号,我希望它能够变成我指定的“/”符号。 - Diskdrive
7
使用“MM”而不是“mm”——“mm”表示分钟,而非月份。 - Lloyd Powell
1
可能是如何在C#中使用斜杠格式化日期的重复问题。 - Dzyann
DateTime.ToString的MSDN文档完全错误:“例如,“MM/dd/yyyyHH:mm”格式字符串以固定格式显示日期和时间字符串...无论特定于文化的设置如何,格式字符串都使用“/”作为固定日期分隔符。” - Colonel Panic
6个回答

262

斜杠是一个日期分隔符,这将使用当前区域设置的日期分隔符。

如果您希望硬编码为始终使用斜杠,可以像这样操作:

DateTime.ToString("dd'/'MM'/'yyyy")

2
@spender - 在某些文化中,他们就是如此。 - Daniel A. White
6
你也可以使用这个格式:dateTime.ToString(@"yyyy/MM/dd")。说明:这是一个关于将日期时间转换为特定格式的代码示例,使用 C# 语言中的 ToString 方法。其中 @ 符号表示后面的字符串按照字面意义进行解释,所以需要用反斜杠对斜杠进行转义。 yyyy 表示年份, MM 表示月份, dd 表示日期。 - base2
1
MSDN 参考文献:http://msdn.microsoft.com/zh-cn/library/8kb3ddd4.aspx#dateSeparator - russau
@DanielA.White 有些国家左撇子比右撇子多吗?我的意思是,当我想到用剑斜杠(右撇子正常)时,它会变成 / :) - Bitterblue
2
使用反斜杠转义格式字符串也可以有效:DateTime.Now.ToString("dd\/MM\/yyyy"); - TomB
显示剩余2条评论

76

CultureInfo.InvariantCulture作为DateTime的第二个参数传入,它将按您所需的方式返回字符串,甚至可以是非常特殊的格式:

DateTime.Now.ToString("dd|MM|yyyy", CultureInfo.InvariantCulture)

将返回:28|02|2014


1
这段代码比被接受的答案更清晰(我的意思是添加CultureInfo)。它看起来至少比用撇号转义斜杠要好。 - Sergey
3
比使用转义字符更容易阅读。我有点震惊,我之前并不知道我的日期格式会被覆盖掉! - Savage

14

CultureInfo.InvariantCulture添加为参数:

using System.Globalization;

...

var dateTime = new DateTime(2016,8,16);
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

将返回:

"16/08/2016"

如果开发人员在您的解决方案中使用tostring方法并带有一些字母,如M m ss等,则会得到错误的结果。例如,Datetime.Now.ToString("yyyy/dd/mm/Month",CultureInfo.InvariantCulture)将不会得到2017/01/02/Month的结果,而是会得到2017/01/02/2onth的结果。 - Okan SARICA
如果您想在日期后缀上“/月”,则应在ToString方法之后执行。DateTime.Now.ToString(“yyyy/MM/dd”,CultureInfo.InvariantCulture)+“/月”; - Mikael Engver

1
如果您使用MVC、表格,它的工作方式如下:

<td>@(((DateTime)detalle.fec).ToString("dd'/'MM'/'yyyy"))</td>

0

试一试这个。

 @foreach (DataRow _Row in CashBook2.Rows)
            {
                <tr>
                    <td>@DateTime.Parse(_Row["Vou_Date"].ToString()).ToString(DateFormat)</td>
                    <td>@_Row["Vou_No"].ToString()</td>
                    <td>@_Row["Description"].ToString()</td>
                    <td>@decimal.Parse(_Row["DR"].ToString()).ToString(NumFormat)</td>
                    <td>@decimal.Parse(_Row["CR"].ToString()).ToString(NumFormat)</td>
                    <td>@Balance</td>
                </tr>
            }

请提供代码的一些背景信息。Translated: Please provide some background information for the code. - PawZaw

-3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接