2017-01-17 3 views
-1
val = "0"&now 

MsgBox Вал «Я получаю„0“в передней части 1, таких как 01/16/2017 10:10:12 PMНе получать добавленную дату VBScripts

Если бы я изменил его на

val2 = DateAdd("d",2,"0"&Now) 

MsgBox val2 «Я не получаю "0" перед 1.

Любая идея, Что я не так?

+2

Это общая ошибка сделать. При вычислении значений даты убедитесь, что вы работаете с датой, когда вы готовы отформатировать дату, чтобы отобразить определенный способ * (нулевое дополнение и т. Д.) * Преобразовать в строку. Поэтому выполните свой «DateAdd()» как обычно, а затем отформатируйте его. См. [Формат текущей даты и времени] (http://stackoverflow.com/a/22575530/692942). – Lankymart

ответ

-1

Вы не сохраняете форматирование (создавая причудливые строки из подстилающих данных) и обрабатывая/вычисляя отдельные данные.

' The concatenation operator & converts its operands to strings 
WScript.Echo 1, TypeName(Date()), TypeName(Date() & "") 
' DateAdd() converts its third argument to a date 
WScript.Echo 2, DateAdd("d", 1, "0" & Date()) 
' Fails 
WScript.Echo 3, DateAdd("d", 1, "BAD" & Date()) 

выход:

1 Date String 
2 18.01.2017 
e:\misc\x.vbs(6, 1) Laufzeitfehler in Microsoft VBScript: Typenkonflikt: '[string: "BAD17.01.2017"]' 

"0" вы предварять в AddDate() вызов теряется при преобразовании; возвращаемое значение - это дата, которая не имеет представления об нулевом заполнении.

0

Я думаю, что вы будете иметь, чтобы построить его:

' Add your required day 
' ------------------------ 
nNowAdd = DateAdd("d", 2, Now()) 

' Build the date/time string from components 
' with leading zeros -> Right("0" & Blah, 2) 
' ------------------------------------------ 
val2 = Right("0" & Day(nNowAdd), 2) & "/" & _ 
Right("0" & Month(nNowAdd), 2) & "/" & Year(nNowAdd) & _ 
" " & Right("0" & Hour(nNowAdd), 2) & ":" & Right("0" & Minute(nNowAdd), 2)