C# 正在尝试以与字符串不同的格式将字符串转换为日期时间

C# 正在尝试以与字符串不同的格式将字符串转换为日期时间,c#,string,datetime,formatting,C#,String,Datetime,Formatting,因此,我必须将(MM-dd-yyy)格式的日期转换为(dd-MMM-yyy)。我最后做的是 string strProvisionalDate = "04-22-2001"; string strFormat = "MM-dd-yyyy"; DateTime dtProvisional; DateTime.TryParseExact(strProvisionalDate, strFormat, CultureInfo.InvariantCulture, DateTimeStyles.None,

因此,我必须将(MM-dd-yyy)格式的日期转换为(dd-MMM-yyy)。我最后做的是

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。这是可行的,但我好奇地问,是否有更好的方法来做到这一点…它似乎不是很优雅


编辑:事实证明,在这种情况下,DTTemperative和DTTemperationalConverted最终是相同的。所以我的新问题是,如何将MM-dd-YYYY格式的字符串转换为dd-MMM-YYYY格式的日期时间?DTTIMAL将进入SQL数据库,它必须是日期格式。

DateTime对象不将日期/时间存储为格式,而是将其存储为自历元以来的若干个刻度。DTTemperative和DTTemperationalConvertedDateTime作为对象之间应该没有区别(它们的不可靠值应该相同)。使用字符串格式功能将日期时间输出到字符串时,字符串格式始终可以更改

请参阅有关此问题的备注部分

我将正确设置日期格式,以便输出:


格式(“{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");
        }
    }
DateTime激励;
/// 
///输入格式:ddMMyy如070711
///输出格式:dd MMM YYYY,如2011年7月7日
/// 
公共字符串激励字符串
{
设置
{
DateTime.TryParseExact(值,“ddMMyy”,CultureInfo.InvariantCulture,datetimestyle.None,out IncentiveDate);
}
得到
{
返回激励日期至字符串(“dd-MMM-yyyy”);
}
}

哦,糟糕,你说得对。这是我的后续问题…我需要临时数据格式为“dd-MMM-yyyy”,我怎么能这样做?我不明白你为什么要打最后一个TryParseExact电话。。。您已经有了DateTime对象,为什么要将其转换为字符串,然后再返回DateTime对象?SQL Server中该字段的数据库类型是什么?SQL Server以类似的方式存储日期,并且相当容忍传递格式良好的日期字符串值。数据库类型为Date。客户端希望所有日期都是dd-MMM-yyy格式。如果我向SQL Server传递一个字符串,比如“12-Feb-1999”,它会接受它作为日期吗?我认为,如果SQL Server数据类型是date,传递它的格式实际上并不重要,客户端的格式只在实际使用数据的任何应用程序中才重要,因为最终SQL Server不存储日期格式,而是(即使在查询中)当您想要改变标准格式时,也可以控制日期格式(我不知道SQL Server是否有可配置的标准格式).是的,当我发现dttemporational和dttemporational在相同的位置转换时,我非常激动。因为它们是相同的,所以您可以使用
dttemporational.ToString(格式)