简体   繁体   English

如何将字符串转换为日期

[英]How to convert String to date

I have a requirement to treat strings of the form 20031006, among others as datetime. 我需要将格式为20031006的字符串视为datetime。 Using the C# functions, I came up with the function below for converting most all of my dates in my application. 使用C#函数,我想到了下面的函数,用于转换应用程序中的大多数日期。 However, I don't seem to have the format for converting the string 20031006 to date. 但是,我似乎没有将字符串20031006转换为日期的格式。 What methods do I use to accomplish this please? 请问我用什么方法来做到这一点? Thanks in advance. 提前致谢。

 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;
        }

DateTime.ParseExact

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

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

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

Use ParseExact method: MSDN reference 使用ParseExact方法: MSDN参考

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

Here is your solution. 这是您的解决方案。

a single string format 单个字符串格式

using System.Globalization;

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

also can be done like this 也可以这样做

if you need a function which returns the required string : 如果您需要一个返回所需字符串的函数:

 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;
 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM