C# 转换日期时间

C# 转换日期时间,c#,.net,C#,.net,这项工作: testDateTime = DateTime.ParseExact("16/10/2010", "dd/MM/yyyy", null); 这并不是: string somedate = "16/10/2010"; testDateTime = DateTime.ParseExact(somedate, "dd/MM/yyyy", null); 为什么???这两个代码段完全相同,应该工作/不工作相同。我怀疑somedate变量的值不是您认为它在应用程序中的值。尝试调试。这两个代码

这项工作:

testDateTime = DateTime.ParseExact("16/10/2010", "dd/MM/yyyy", null);
这并不是:

string somedate = "16/10/2010";
testDateTime = DateTime.ParseExact(somedate, "dd/MM/yyyy", null);

为什么???

这两个代码段完全相同,应该工作/不工作相同。我怀疑
somedate
变量的值不是您认为它在应用程序中的值。尝试调试。

这两个代码段完全相同,应该工作/不工作相同。我怀疑
somedate
变量的值不是您认为它在应用程序中的值。尝试调试。

当我尝试它时,它工作得很好。。。只是复制并粘贴了它

插入断点,将指针放在变量上,并检查月、日和年成员。如果他们不是正确的,让我们看看你看到了什么


如果您使用打印或msgbox来显示变量的值,可能您没有为输出提供掩码/格式。

我尝试时效果很好。。。只是复制并粘贴了它

插入断点,将指针放在变量上,并检查月、日和年成员。如果他们不是正确的,让我们看看你看到了什么


如果您使用打印或msgbox来显示变量的值,可能您没有为输出提供掩码/格式。

当我尝试时,这两种方法都适用于我。您得到的错误是什么

ParseExact()使用第二个参数来解析输入字符串,而不是以该格式返回值


编辑:根据Joe下面的评论-您得到的输出将是“MM/dd/yyyy”格式-输出将是没有任何内在格式的DateTime类型。

当我尝试时,这两种方法都适用于我。您得到的错误是什么

ParseExact()使用第二个参数来解析输入字符串,而不是以该格式返回值


编辑:根据Joe下面的评论-您得到的输出将是“MM/dd/yyyy”格式-输出将是没有任何内在格式的DateTime类型。

您正在尝试更改DateTime格式,对吗?不能使用DateTime对象执行此操作。只有在使用String.format:String.format(“{0:d/M/yyyy HH:mm:ss}”,dt)显示DateTime对象时,才能更改格式。(例如或其他方法)

您正在尝试更改日期时间格式,对吗?不能使用DateTime对象执行此操作。只有在使用String.format:String.format(“{0:d/M/yyyy HH:mm:ss}”,dt)显示DateTime对象时,才能更改格式。(例如或其他方法)

您的两个示例都是等效的,如果您当前的文化背景是en-US,则应该有效,但不一定适用于所有其他文化背景

例如,以下内容将引发FormatException,因为反区域性使用句点作为分隔符(16.10.2010):

一般来说,最好在可用时始终指定
IFormatProvider
参数(FxCop将对此发出警告):如果您正在解析来自当前用户的输入,通常是CultureInfo.CurrentCulture;或者CultureInfo.InvariantCulture,如果您正在解析来自外部源的输入

// For input from the current user (16.10.2010 in Germany)
testDateTime = DateTime.ParseExact("16/10/2010", "dd/MM/yyyy", CultureInfo.CurrentCulture);

// For input from an external source in a defined culture-invariant format
testDateTime = DateTime.ParseExact("16/10/2010", "dd/MM/yyyy", CultureInfo.InvariantCulture);

你的两个例子都是等效的,如果你当前的文化是美国文化,那么这两个例子应该是有效的,但不一定适用于所有其他文化

例如,以下内容将引发FormatException,因为反区域性使用句点作为分隔符(16.10.2010):

一般来说,最好在可用时始终指定
IFormatProvider
参数(FxCop将对此发出警告):如果您正在解析来自当前用户的输入,通常是CultureInfo.CurrentCulture;或者CultureInfo.InvariantCulture,如果您正在解析来自外部源的输入

// For input from the current user (16.10.2010 in Germany)
testDateTime = DateTime.ParseExact("16/10/2010", "dd/MM/yyyy", CultureInfo.CurrentCulture);

// For input from an external source in a defined culture-invariant format
testDateTime = DateTime.ParseExact("16/10/2010", "dd/MM/yyyy", CultureInfo.InvariantCulture);

出于某种原因,在我添加以下内容之前,它不会对我起作用:CultureInfo.InvariantCulture


DateTime.ParseExact(sValue,“dd/MM/yyyy”,CultureInfo.InvariantCulture)

出于某种原因,在我添加以下内容之前,它不会对我起作用:CultureInfo.InvariantCulture


DateTime.ParseExact(sValue,“dd/MM/yyyy”,CultureInfo.InvariantCulture)

这两种方法都适用于我——或者至少是目前给出的例子——因此有比问题中描述的更复杂的事情发生。你有什么错误吗?如果是,错误是什么?两者都适用于我。问题/错误是什么?两者对我都有效-或者至少是目前给出的示例-因此,有比问题中描述的更复杂的事情发生。你有任何错误吗?如果是,错误是什么?两者都适用于我。问题/错误是什么?但日期时间格式是相同的?对我来说,日期和月份是切换的:“2010年10月16日”变为“2010年10月16日”……你是说你有一个16个月没有例外吗?不,“dd/MM/yyyy”变为“MM/dd/yyyy”。但是日期时间格式是相同的?对我来说,日期和月份是切换的:“2010年10月16日”变为“2010年10月16日”…你是说你有一个16个月没有得到异常吗?否。“dd/MM/yyyy”变为“MM/dd/yyyyy”。“你得到的输出将是“MM/dd/yyyy”格式”-输出将是没有任何内在格式的日期时间类型。“你得到的输出将是”MM/dd/yyyyy““格式”-输出将是没有任何内在格式的日期时间类型。