2014-11-13 14 views
2

В VB6 я пытаюсь добавить дни к дате, которая находится в формате «YYYYMMDD». Я могу добавить дни, как это:Добавить дней в формате «YYYYMMDD»

Pull_Date = Need_Date + Val(txtLeadTime.Text) 

, который работает, до результирующих дней больше, чем количество дней в месяце. Я попытался использовать DateAdd, но он не принимает формат YYYYMMDD - также нет CDate.

+0

Работа с VB. Напишите функцию для изменения формата на один VB, распознаваемый на дату, используйте метод DateAdd, измените формат и верните результат. – jac

ответ

0

Вам нужно преобразовать строку даты к дате, так что вы можете использовать DateAdd function:

Dim Need_Date As String 
Dim Pull_Date As Date 
Dim tmpDate As Date 

Need_Date = "20141113" 
tmpDate = CDate(Mid$(Need_Date, 5, 2) & "/" & Right$(Need_Date, 2) & "/" & Left$(Need_Date, 4)) 

Pull_Date = DateAdd("d", Val(txtLeadTime.Text), tmpDate) 
MsgBox Format$(Pull_Date, "yyyymmdd") '// if LeadTime is 25 days, displays 20141208 

Пожалуйста, обратите внимание, что разбор ваш Need_Date по характеру позиция может взорвать, если он не отформатирован точно так, как ожидалось.

+1

'CVDate()' - это медленная и устаревшая функция, предназначенная только для работы старых проектов без обновления. Вы хотите функцию 'CDate()'. – Bob77

+0

Решение выше с CDate() работало как шарм, спасибо! – jesse

0

После углубиться в этот старый код, я обнаружил, что функция преобразования была уже создана:

Public Function Date_Format_YYYYMMDD(ByVal sDate As String) As String 
    If IsDate(sDate) Then 
     sDate = Format(sDate, "YYYYMMDD") 
    End If 

    Date_Format_YYYYMMDD = sDate 
End Function 

С помощью этой функции, это очень легко:

Pull_Date = Date_Format_YYYYMMDD(Need_Date) + Val(txtLeadTime.Text) 

Единственное, что я не» t понять почему

Pull_Date = Format(Need_Date, "YYYYMMDD") + Val(txtLeadTime.Text) 

не работает. Похоже, что он выполняет ту же функцию, что и функция.

+0

Я не знаю, как это работает. Функция IsDate не работает для меня, когда я передаю «20141113». – jac

+0

И вызов 'Format()' просто конвертирует String в Date, а затем возвращается к строке в явном виде ... если он все равно работает для любого пользователя в любой локали. Строки - это не даты. – Bob77

+0

Странно, я проверил его несколько раз вчера и, похоже, работал. Сегодня это не так. Думаю, вчера я делал что-то неправильное. Решение ниже работало для меня. – jesse

Смежные вопросы