所以我不得不将日期格式为(MM-dd-yyyy)转换为(dd-MMM-yyyy)。我最终做的是。。。
string strProvisionalDate = "04-22-2001";
string strFormat = "MM-dd-yyyy";
DateTime dtProvisional;
DateTime.TryParseExact(strProvisionalDate, strFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dtProvisional);
string strProvisionalDateConverted = dtProvisional.ToString("dd-MMM-yyyy");
string strFormatConverted = "dd-MMM-yyyy";
DateTime dtProvisionalConverted;
DateTime.TryParseExact(strProvisionalDateConverted, strFormatConverted, CultureInfo.InvariantCulture, DateTimeStyles.None, out dtProvisionalConverted);
基本上,我将其转换为DateTime,将其转换成我想要的格式的字符串,然后将其转换回DateTime。它有效,但我很好奇是否有更好的方法。。。它看起来不太优雅。
edit:事实证明,在这个dtTemporary和dtProvisionalConverted最终是相同的。所以我的新问题是,如何将MM-dd-YYYY格式的字符串转换为dd-MMM-YYYY格式的DateTime?dtTemporary要进入SQL数据库,它必须是Date格式。
DateTime对象不将日期/时间存储为一种格式,而是将其存储为自epoch以来的多个刻度。作为对象的dtTemporary和dtProvisionalConverted DateTime之间不应有区别(它们的撤消传递值应相同)。当使用字符串格式功能将DateTime输出到字符串时,始终可以更改字符串格式。
请参阅MSDN文章的备注部分。
我这将正确格式化你的日期输出:
String.Format("{0:dd MMM yyyy}",dt);
在类似的行中搜索详细信息。。。。对我有用…
DateTime IncentiveDate;
/// <summary>
/// Input Format: ddMMyy eg. 070711
/// Output Format: dd-MMM-YYYY eg. 07-JUL-2011
/// </summary>
public string IncentiveDateAsString
{
set
{
DateTime.TryParseExact(value, "ddMMyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out IncentiveDate);
}
get
{
return IncentiveDate.ToString("dd-MMM-yyyy");
}
}