将格式化的日期字符串转换为DateTime(int,int,int,int,int,int)以传递给函数



我将时间现在与存储在数据库中的某个地方的时间进行比较。数据库中存储的时间格式为"yyyyMMddHHmmss"。例如,对于存储的时间值,数据库可能返回201106203354。然后,我使用一个函数来比较现在的时间与从数据库中读取的时间。

我现在在做什么:

    创建6个int变量
  1. 从格式化日期字符串中获取子字符串并将子字符串转换为int32。
  2. 向函数传递6个int变量。

我想做什么:

而不是分割格式化的日期时间字符串,并分别创建和分配六个变量来传递给函数,我想知道是否有一些方法可以简单地将格式化的日期时间字符串转换为DateTime

请参阅我的代码,因为它将有助于解释我显然不能…

传递时间现在与从数据库读取的时间一起传递:

Private void passTime()
{
            string timeStamp;
            int year, month, day, hour, minutes, seconds;
            DateTime dt = DateTime.Now;
            timeStamp = dt.ToString("yyyyMMddHHmmss");
            year = Convert.ToInt32(timeStamp.Substring(0, 4));
            month = Convert.ToInt32(timeStamp.Substring(4, 2));
            day = Convert.ToInt32(timeStamp.Substring(6, 2));
            hour = Convert.ToInt32(timeStamp.Substring(8, 2));
            minutes = Convert.ToInt32(timeStamp.Substring(10, 2));
            seconds = Convert.ToInt32(timeStamp.Substring(12, 2));
            MessageBox.Show(GetDifferenceDate(
                            new DateTime(year,month,day,hour,minutes,seconds),
                            // Example time from database
                            new DateTime(2011, 08, 11, 11, 40, 26)));
}
static string GetDifferenceDate(DateTime date1, DateTime date2)
        {
            if (DateTime.Compare(date1, date2) >= 0)
            {
                TimeSpan ts = date1.Subtract(date2);
                return string.Format("{0} days",
                    ts.Days);
            }
            else
                return "Not valid";
        }

所以,很简单,我想比较两个日期都是"yyyyMMddHHmmss"的格式,或者如果这是不可能的,我想把前一个日期字符串转换成一个日期时间。

我确定我在这里遗漏了一些东西,我会回去再读一遍,但如果我有什么不清楚的地方,请随时问我。

谢谢你,埃文

您要找的是ParseExact:

DateTime.ParseExact(timeStamp, "yyyyMMddHHmmss", CultureInfo.InvariantCulture)