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

使用ParseExact方法:MSDN参照

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

実際の日付形式に一致するカスタム形式の文字列を使用します。

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