0

我需要将 20031006 等形式的字符串视为日期时间。使用 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

4 回答 4

4

DateTime.ParseExact

string strDate = "20031006";
DateTime date = DateTime.ParseExact(strDate, "yyyyMMdd",  CultureInfo.InvariantCulture);
于 2012-10-11T09:27:50.977 回答
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;
 }
于 2013-12-10T17:39:56.177 回答
1

使用与实际日期格式匹配的自定义格式字符串

var myDT = DateTime.ParseExact(myDate, "yyyyMMdd", CultureInfo.InvariantCulture);
于 2012-10-11T09:28:27.027 回答
1

使用ParseExact方法:MSDN参考

string stringDate = "20000102";
DateTime dateTime = DateTime.ParseExact(stringDate, "yyyyMMdd",  CultureInfo.InvariantCulture);
于 2012-10-11T09:29:25.340 回答