Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串到日期时间约定更改字符串的格式_C#_Asp.net_Datetime - Fatal编程技术网

C# 字符串到日期时间约定更改字符串的格式

C# 字符串到日期时间约定更改字符串的格式,c#,asp.net,datetime,C#,Asp.net,Datetime,我的代码是这样的 DateTime dt = new DateTime(); dt= DateTime.ParseExact("14/09/2017", "dd/MM/yyyy", CultureInfo.InvariantCulture); 我希望dt的格式是dd/MM/yyyy,但我得到的输出是MM/dd/yyyy格式。 这是我得到的正确输出2017年9月14日12:00:00 am。 有人能指出我在这里做错了什么吗?如果您希望使用格式“dd/MM/yyyy”,则需要在显示日期时间时

我的代码是这样的

 DateTime dt = new DateTime();
 dt=  DateTime.ParseExact("14/09/2017", "dd/MM/yyyy", CultureInfo.InvariantCulture);
我希望
dt
的格式是dd/MM/yyyy,但我得到的输出是MM/dd/yyyy格式。 这是我得到的正确输出
2017年9月14日12:00:00 am

有人能指出我在这里做错了什么吗?

如果您希望使用格式
“dd/MM/yyyy”
,则需要在显示
日期时间时指定它。为此,您可以使用此方法重载:

DateTime
本身没有格式。只有它的字符串表示形式有一个

编辑:

重要评论:

/
是一个自定义格式说明符,它用本地日期分隔符替换所有事件。您可以通过将它们嵌入
中来对它们进行缩放,或者使用
CultureInfo.InvariantCulture
作为第二个参数。阅读

这意味着要么使用以下方法:

string str_rep = dt.ToString("dd'/'MM'/'yyyy");
或:


您的
dt
日期时间
,而不是
字符串
。格式概念仅在您获取其文本(也称为
字符串
)表示时适用。您看到的可能是debbuger/ide作为文本表示向您展示的内容

如果您获得了
dt
的特定格式,则可以使用
.ToString()
方法和
dd/MM/yyyyy
格式以及适当的区域性,如
InvariantCulture

string myFormat = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
对于初学者来说,理解什么是日期时间和它们的字符串表示形式之间的区别是非常重要的。

如果
DateTime.ToString()
导致了意外的格式,很可能是当前区域性未设置。默认情况下,使用的日期格式取自主机。但是,您可以通过为所需的区域性代码设置线程的
CurrentCulture
来直接指定它,也可以在应用程序的配置文件中进行设置。例如,web应用程序的web.config可以有一个
globalization
部分,如下所示

<globalization culture="en-GB" uiCulture="en-GB" />


或者,如前所述,您可以通过自定义格式字符串
显式设置格式。ToString(“dd/MM/yyyy”)

如果datetime没有格式,则可以关闭问题。如果要再次将其转换为字符串,请使用
dt.ToString(“dd/MM/yyyy”,CultureInfo.InvariantCulture)不能使用-
dt.ToString(“dd/MM/yyyy”,CultureInfo.InvariantCulture)
正如@TimSchmelter提到的,
Datetime
对象没有格式。只有在某处显示时才决定格式。如果您发布日期显示方式,我们可以告诉您问题所在。@Sujit.Warrier
DateTime
的副本存储为8字节二进制块,而不是MM/dd/yyyy字符串。只有在调用对象的
ToString()
方法时,才会应用当前区域性的格式并生成文本。这是不同的,
/
是一个自定义格式说明符,它用本地日期分隔符替换所有出现的内容。您可以通过将它们嵌入
中来对它们进行缩放,或者使用
CultureInfo.InvariantCulture
作为第二个参数。阅读:@TimSchmelter谢谢你指出。我把它纳入了我的计划answer@TimSchmelter,有关正向斜杠的良好技术细节,但不太可能对OP造成问题,因为它们似乎是在格式代码“/”实际上是“/”本身的环境/文化中运行的。很高兴知道though@DiskJunky:我看不出他实际使用的是
/
,否则就没有必要指定
文化信息。不变量文化
他做了什么。@DiskJunky:检查过了,他的城市是喀拉拉邦,所以文化是
ml IN
,它确实使用了
//code>;-)如果您想查看斜杠,最好
ToString(“dd'/'MM'/'yyyy”)
string myFormat = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
<globalization culture="en-GB" uiCulture="en-GB" />