C# string to datetime 格式输出错误
C# string to datetime wrong format output
我正在尝试将字符串转换为日期时间格式,这是我的代码
CultureInfo culture = new CultureInfo("da-DK");
DateTime endDateDt = DateTime.ParseExact("05-02-2015 15:00", "dd-MM-yyyy HH:mm", culture);
Response.Write(endDateDt);
这是输出结果
2/5/2015 3:00:00 PM
我正在寻找的输出应该是
05-02-2015 15:00
我做错了什么?
您没有格式化 DateTime
对象的字符串表示形式。如果您没有指定格式,那么您将获得基于当前文化的默认格式。
要获得所需的输出,您可以试试这个:
endDateDt.ToString("dd-MM-yyyy HH:mm");
让我们更深入一点..
Response.Write
method doesn't have an overload for DateTime
, that's why this calls Response.Write(object)
overload. And here how it's implemented;
public virtual void Write(Object value)
{
if (value != null)
{
IFormattable f = value as IFormattable;
if (f != null)
Write(f.ToString(null, FormatProvider));
else
Write(value.ToString());
}
}
由于DateTime
实现了IFormattable
接口,这将生成
f.ToString(null, FormatProvider)
因此。来自 DateTime.ToString(String, IFormatProvider)
overload.
If format is null
or an empty string (""), the standard format
specifier, "G", is used.
看起来你的 CurrentCulture
's ShortDatePattern
is M/d/yyyy
and LongTimePattern
是 h:mm:ss tt
,这就是你得到 2/5/2015 3:00:00 PM
结果的原因。
作为解决方案,您可以使用 .ToString()
方法获取 DateTime
的字符串表示形式,并提供使用 HttpResponse.Write(String)
重载来获得准确表示形式的方法。
Response.Write(endDateDt.ToString("dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture));
我正在尝试将字符串转换为日期时间格式,这是我的代码
CultureInfo culture = new CultureInfo("da-DK");
DateTime endDateDt = DateTime.ParseExact("05-02-2015 15:00", "dd-MM-yyyy HH:mm", culture);
Response.Write(endDateDt);
这是输出结果
2/5/2015 3:00:00 PM
我正在寻找的输出应该是
05-02-2015 15:00
我做错了什么?
您没有格式化 DateTime
对象的字符串表示形式。如果您没有指定格式,那么您将获得基于当前文化的默认格式。
要获得所需的输出,您可以试试这个:
endDateDt.ToString("dd-MM-yyyy HH:mm");
让我们更深入一点..
Response.Write
method doesn't have an overload for DateTime
, that's why this calls Response.Write(object)
overload. And here how it's implemented;
public virtual void Write(Object value)
{
if (value != null)
{
IFormattable f = value as IFormattable;
if (f != null)
Write(f.ToString(null, FormatProvider));
else
Write(value.ToString());
}
}
由于DateTime
实现了IFormattable
接口,这将生成
f.ToString(null, FormatProvider)
因此。来自 DateTime.ToString(String, IFormatProvider)
overload.
If format is
null
or an empty string (""), the standard format specifier, "G", is used.
看起来你的 CurrentCulture
's ShortDatePattern
is M/d/yyyy
and LongTimePattern
是 h:mm:ss tt
,这就是你得到 2/5/2015 3:00:00 PM
结果的原因。
作为解决方案,您可以使用 .ToString()
方法获取 DateTime
的字符串表示形式,并提供使用 HttpResponse.Write(String)
重载来获得准确表示形式的方法。
Response.Write(endDateDt.ToString("dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture));