如何将String转换为日期

时间:2012-10-11 09:25:27

标签: c#

我要求处理20031006形式的字符串,其中包括datetime。使用C#函数,我想出了下面的函数来转换我的应用程序中的大部分日期。但是,我似乎没有将字符串20031006转换为日期的格式。请问我用什么方法来完成这个?提前致谢。

 private bool IsDate(string dateString)
        {
            string format;
            DateTime dateValue;
            CultureInfo enUS = new CultureInfo("en-US"); 
            CultureInfo provider = CultureInfo.InvariantCulture;
            DateTime myNum;
            try
            {
                if (DateTime.TryParse(dateString, out myNum))
                {
                    return true;
                }
                format = "d";
                if (DateTime.TryParseExact(dateString, "d",provider, DateTimeStyles.AdjustToUniversal, out dateValue))
                {
                    return true;
                }

                dateValue = DateTime.ParseExact(dateString, format, new CultureInfo("fr-FR"));
                if (dateValue != null)
                {
                    return true;
                }
                if (DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.None, out dateValue))
                {
                    return true;
                }

                if (DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None, out dateValue))
                {
                    return true;
                }
                if (DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite, out dateValue))
                {
                    return true;
                }
                if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue))
                {
                    return true;
                }
                if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.AdjustToUniversal, out dateValue))
                {
                    return true;
                }
                if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dateValue))
                {
                    return true;
                }
            }
            catch (Exception)
            {
                return false;
            }

            return false;
        }

4 个答案:

答案 0 :(得分:4)

<强> DateTime.ParseExact

string strDate = "20031006";
DateTime date = DateTime.ParseExact(strDate, "yyyyMMdd",  CultureInfo.InvariantCulture);

答案 1 :(得分:1)

使用与实际日期格式匹配的custom format string

var myDT = DateTime.ParseExact(myDate, "yyyyMMdd", CultureInfo.InvariantCulture);

答案 2 :(得分:1)

使用ParseExact方法:MSDN reference

string stringDate = "20000102";
DateTime dateTime = DateTime.ParseExact(stringDate, "yyyyMMdd",  CultureInfo.InvariantCulture);

答案 3 :(得分:1)

这是您的解决方案。

单字符串格式

using System.Globalization;

string dt = DateTime.Parse(txtDate.Text.Trim())
                    .ToString("yyyy/MM/dd", CultureInfo.InvariantCulture);

也可以这样做

如果您需要一个返回所需字符串的函数:

 public string FormatPostingDate(string txtdate)
 {
     if (txtdate != null && txtdate != string.Empty)
     {
         DateTime postingDate = Convert.ToDateTime(txtdate);
         return string.Format("{0:yyyy/MM/dd}", postingDate);
     }
     return string.Empty;
 }