我想将8位数值转换为DateTime对象。我怎样才能做到这一点?例如,如果用户输入08082010,则应使用C#将其转换为08/08/2010。
答案 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个字符的不同字符串长度,依此类推。在调用之前验证输入。