尝试以不同于字符串的格式将字符串转换为日期时间

时间:2011-06-09 20:20:01

标签: c# string datetime formatting

所以我必须将(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数据库,它必须采用日期格式。

2 个答案:

答案 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");
        }
    }