将字符串转换为日期格式

时间:2009-10-14 16:29:22

标签: c# asp.net

我有一个像这样的字符串“10/13/2009 12:00:00 AM”

如何使用c#

将其转换为YYYYMMDD格式

5 个答案:

答案 0 :(得分:12)

计算出你想要的两种格式,然后使用:

DateTime dt = DateTime.ParseExact(input, inputFormat, 
                                  CultureInfo.InvariantCulture);
string output = dt.ToString(outputFormat, CultureInfo.InvariantCulture);

例如:

using System;
using System.Globalization;

class Test
{
    static void Main(string[] args)
    {
        string input = "10/13/2009 12:00:00 AM";
        string inputFormat = "MM/dd/yyyy HH:mm:ss tt";
        string outputFormat = "yyyyMMdd";
        DateTime dt = DateTime.ParseExact(input, inputFormat, 
                                          CultureInfo.InvariantCulture);
        string output = dt.ToString(outputFormat, CultureInfo.InvariantCulture);
        Console.WriteLine(output);
    }
}

答案 1 :(得分:2)

如果您的字符串是.Net可以理解的有效日期时间格式,您只需要:

   DateTime.Parse(yourString).ToString("yyyyMMdd")

编辑:.Net没有明确的格式规范可以理解许多合理的日期时间格式,但如果您的特定格式不是,那么您将需要使用显式格式说明符。

   DateTime.ParseExact(yourString, format, 
         CultureInfo.InvariantCulture)).ToString("yyyyMMdd")

答案 2 :(得分:0)

string s =  String.Format("{0:yyyyMMdd}", Convert.ToDateTime("10/13/2009 12:00:00 AM"));

答案 3 :(得分:0)

这些都是非常好的解决方案,但如果你传递的内容与模式不符,他们就会抛出异常。我喜欢自己使用CSLA的SmartDate类http://www.lhotka.net/cslanet/download.aspx。它很好地处理了空值和无效值。 TryStringToDate函数是魔术发生的地方:

    private static bool TryStringToDate( string value, EmptyValue emptyValue, ref DateTime result )
    {
        DateTime tmp;
        if( String.IsNullOrEmpty( value ) )
        {
            if( emptyValue == EmptyValue.MinDate )
            {
                result = DateTime.MinValue;
                return true;
            }
            result = DateTime.MaxValue;
            return true;
        }
        if( DateTime.TryParse( value, out tmp ) )
        {
            result = tmp;
            return true;
        }
        string ldate = value.Trim().ToLower();
        if( ldate == "SmartDateT" ||
            ldate == "SmartDateToday" ||
            ldate == "." )
        {
            result = DateTime.Now;
            return true;
        }
        if( ldate == "SmartDateY" ||
            ldate == "SmartDateYesterday" ||
            ldate == "-" )
        {
            result = DateTime.Now.AddDays( -1 );
            return true;
        }
        if( ldate == "SmartDateTom" ||
            ldate == "SmartDateTomorrow" ||
            ldate == "+" )
        {
            result = DateTime.Now.AddDays( 1 );
            return true;
        }
        return false;
    }

所以你应该最终结束这样的事情:

        SmartDate dt = new SmartDate(input); 
        dt.FormatString = outputFormat;
        string output = dt.Text; 
        Console.WriteLine(output);

答案 4 :(得分:0)

您可以尝试这样的事情:

string myDate = "10/13/2009 12:00:00 AM";
DateTime result = new DateTime(DateTime.Now.Year, 1, 1);
DateTime.TryParse(myDate, out result);
string output = result.ToString("yyyyMMdd");
相关问题