我试图将字符串转换为Datetime格式,这是我的代码
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
我做错了什么?
答案 0 :(得分:4)
您没有格式化DateTime
对象的字符串表示形式。如果您没有指定格式,那么您将获得基于当前文化的 默认格式 。
要获得所需的输出,您可以尝试:
endDateDt.ToString("dd-MM-yyyy HH:mm");
答案 1 :(得分:1)
让我们走得更远..
Response.Write
方法没有DateTime
的重载,这就是调用Response.Write(object)
overload的原因。在这里它是如何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。
如果格式为
null
或空字符串(“”),则使用the standard format specifier, "G"。
您的CurrentCulture
的ShortDatePattern
M/d/yyyy
和LongTimePattern
似乎是h:mm:ss tt
,这就是您获得2/5/2015 3:00:00 PM
的原因。
作为一种解决方案,您可以使用DateTime
方法获取.ToString()
的字符串代表,并提供使用HttpResponse.Write(String)
重载来获得准确的代表。
Response.Write(endDateDt.ToString("dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture));