Преобразовать отформатированную строку даты в DateTime (int, int, int, int, int, int) для передачи в функцию - PullRequest
3 голосов
/ 11 сентября 2011

Я сравниваю время сейчас со временем, хранящимся где-то в базе данных.Время в базе данных хранится в формате «ггггМддЧчммсс».Например, база данных может вернуть 201106203354 для сохраненного значения времени.Затем я использую функцию для сравнения времени сейчас с временем, считанным из базы данных.

Что я делаю сейчас:

  1. Создание 6 intпеременные
  2. Возьмите подстроку отформатированной строки даты и преобразуйте ее в int32.
  3. Передайте 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», или, если это невозможно, я бы хотелпреобразовать предыдущую строку даты в DateTimе.

Я уверен, что что-то здесь оставил, я вернусь и прочту это снова, но, пожалуйста, не стесняйтесь спрашивать меня обо всем, что я оставил неясным.

Спасибо, Эван

1 Ответ

6 голосов
/ 11 сентября 2011

Вы ищете ParseExact:

DateTime.ParseExact(timeStamp, "yyyyMMddHHmmss", CultureInfo.InvariantCulture)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...