将8位数转换为DateTime类型

时间:2010-03-14 06:42:15

标签: c#

我想将8位数值转换为DateTime对象。我怎样才能做到这一点?例如,如果用户输入08082010,则应使用C#将其转换为08/08/2010。

5 个答案:

答案 0 :(得分:14)

CultureInfo provider = CultureInfo.InvariantCulture;
string dateString = "08082010";
string format = "MMddyyyy";
DateTime result = DateTime.ParseExact(dateString, format, provider);

这样可行。

答案 1 :(得分:6)

使用格式说明符为DateTime.ParseExact()"ddMMyyyy"的{​​{1}}。

答案 2 :(得分:5)

我只是想做同样的事情,我不得不同意伊格纳西奥的做法。接受的答案有效,但ParseExact方法在日期字符串无效的情况下抛出异常,而TryParseExact方法只返回false。例如:

using System.Globalization;
// ...
string dateString = "12212010";
string format = "MMddyyyy";
DateTime dateStarted;
if (!DateTime.TryParseExact(dateString, format, null, DateTimeStyles.None, out dateStarted))
    dateStarted = DateTime.Now;

答案 3 :(得分:0)

答案 4 :(得分:0)

全富巴是

 private static DateTime FormatDateTimeString(string stringToFormat)
    {
        var yearStr = stringToFormat.Substring(0,4);
        var monthofyearStr = stringToFormat.Substring(4, 2);
        var dayofmonthStr = stringToFormat.Substring(6, 2);
        var hourStr = stringToFormat.Substring(8, 2);
        var minuteStr = stringToFormat.Substring(10, 2);

        var year = int.Parse(yearStr);
        var monthofyear = int.Parse(monthofyearStr);
        var dayofmonth = int.Parse(dayofmonthStr);
        var hour = int.Parse(hourStr);
        var minute = int.Parse(minuteStr);

        if (year > 999 && year < 3000)
            if(monthofyear > 0 && monthofyear< 13)
                if (dayofmonth > 0 && dayofmonth < 32)
                    if (hour >= 0 && hour < 24)
                        if (minute >= 0 && minute < 60)
                            return new DateTime(year, monthofyear, dayofmonth, hour, minute, 0);

        return DateTime.MinValue;
    }

您可以修改它以处理14、12、8个字符的不同字符串长度,依此类推。在调用之前验证输入。