Количество лет между двумя датами - PullRequest
0 голосов
/ 31 августа 2010

Я пытаюсь выполнить довольно тривиальную задачу, но мой опыт в .net, а не в vb6. Учитывая две строки (скажем "10/17/94" и "10/17/95" для этого примера) я хочу вернуть строковое выражение

X лет

//Date_Due and Date_Time_Performed are strings in the mm/dd/yy format
Duration = (Year(CDate(Date_Due)) - Year(CDate(Date_Time_Performed))) & " years"

но это дает мне runtime error '13' Type Mismatch.

Есть предложения?

EDIT: Ни один из ответов еще не обратился к этому. Результат преобразования должен быть добавлен в строку "лет". Мне нужно строковое представление, а не int.

Ответы [ 3 ]

5 голосов
/ 31 августа 2010

Попробуйте использовать datediff

Duration = CStr(DateDiff("yyyy", CDate(Date_Due), CDate(Date_Time_Performed))) & " years"
0 голосов
/ 01 сентября 2010
Duration = CStr(DateDiff("yyyy", Date_Time_Performed, Date_Due))

Строка "гггг" возобновляет интервал в годах.Вы также можете вернуть интервал в других единицах.

  • гггг - год
  • q - квартал
  • м - месяц
  • д - день
  • ш - неделя
  • ч - час
  • n - минута
  • с - секунда
0 голосов
/ 31 августа 2010
Duration = DateDiff("yyyy", d1, d2)

Однако, чтобы избежать проблем, связанных с локалью, лучше сначала вручную преобразовать строки в даты:

d1 = DateSerial(1900 + cint(right$(literal,2)), cint(left$(literal,2)), cint(mid$(literal,4,2)))

При условии, что ваши даты всегда указаны в мм / дд / гг.Если вы используете форматы даты, зависящие от локали, просто используйте функцию CDate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...