所以我必须将(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。它有效,但我很想知道是否有更好的方法来做到这一点......它似乎并不优雅。
编辑:原来,在这个dtProvisional和dtProvisionalConverted最终是一样的。所以我的新问题是,如何将MM-dd-YYYY格式的字符串转换为dd-MMM-yyyy格式的DateTime? dtProvisional将进入SQL数据库,它必须采用日期格式。
答案 0 :(得分:5)
DateTime对象不会将日期/时间存储为格式,它会将其存储为自纪元以来的多个刻度。 dtProvisional和dtProvisionalConverted DateTime之间应该没有区别作为对象(它们的不良值应该相同)。使用字符串格式功能将DateTime输出到字符串时,始终可以更改字符串格式。
请参阅此MSDN article上的备注部分。
我会正确格式化您的日期以便输出:
String.Format(“{0:dd-MMM-yyyy}”,dt);
答案 1 :(得分:0)
在类似的线上搜索细节.... 这对我有用....
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");
}
}