我想将一个8位数字的值转换为DateTime对象。我该怎么做?例如,如果用户输入08082010,则它应该使用C#将其转换为08/08/2010。
我想将一个8位数字的值转换为DateTime对象。我该怎么做?例如,如果用户输入08082010,则它应该使用C#将其转换为08/08/2010。
CultureInfo provider = CultureInfo.InvariantCulture;
string dateString = "08082010";
string format = "MMddyyyy";
DateTime result = DateTime.ParseExact(dateString, format, provider);
这将起作用。
我刚想尝试做同样的事情,我必须同意Ignacio的方法。被接受的答案是有效的,但是如果日期字符串无效,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;
DateTime.ParseExact()
方法,格式说明符为 "ddMMyyyy"
或 "MMddyyyy"
。完全混乱是
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个字符等。在调用之前先验证输入。