Мне нужны значения, такие как 05:00, -05: 00, когда на входе есть числовые значения 5, -5..Если на входные значения, например 10, -12, то не нужно добавлять ведущие нули .. Я могу создать некоторую функцию, которая проверяет, сколько цифр имеет число, а затем добавить, если нужно, «0», но, возможно, у кого-то есть лучшее решение?Добавить ведущее ноль к номерам
ответ
Ближайшая вещь, которую я могу найти, чтобы помочь с этим, - это функция FormatNumber в VBScript. W3 имеет хороший пример и инструмент для тестирования здесь: http://www.w3schools.com/vbscript/func_formatnumber.asp
Скорее всего, вам придется обернуть эту функцию, чтобы обработать ваш конкретный случай добавления 0. Это должно быть довольно просто, но просто выполните инструкцию типа IFTHEN:
IF x > 0 & x < 10 THEN "0" + x
ELSEIF x > -10 & x < 0 THEN "-0" + Abs(x)
Или что-то в этом роде. Опять же это должно было бы быть строка форматирования вещи как целое всегда будет отражать 5 или -5 не 05 или -05
Надежда, что помогает
Попробуйте
Function FormatHour (input)
Dim sign
If (input < 0) Then
sign = "-"
End If
FormatHour = sign & FormatDateTime(TimeSerial(Abs(input), 0, 0), vbShortTime)
End Function
Почему вы предполагаете, что это дата/время? Сообщение помечено как Numbers not Date или Time, поэтому, если по какой-то причине это решение не работает. Более того, я никогда не видел отрицательного времени до этого, есть ли особый формат страны, о котором я не знаю? –
Потому что 05:00 не похож на число, а час: минутное представление. В любом случае использование FormatDateTime дает вам желаемый формат, не слишком много конкатенации ;-) – Filburt
Да, это похоже на то, что происходит с тем, что предоставил OP. Мне было бы любопытно, если они скажут, что пришло время, не знаю, почему вам понадобится отрицательное время. Спасибо, что опубликовал комментарий к OP. –
Как об этом LPAD и RPAD пример от Microsoft?
Пример не обрабатывает отрицательный вход - просто прокладка проста. – Filburt
Алексей, в следующий раз, пожалуйста, публиковать то, что у вас есть, теперь мы должны угадать, что вы действительно хотите, так вот мое предположение
a = array(0, 5, -5, 15, -55)
for each e in a
wscript.echo mid(" -",instr(e,"-")+1,1)&right("0"&abs(e),2)&":00"
next
00:00
05:00
-05:00
15:00
-55:00
ИЛИ
for i = 0 to uBound(a)
a(i) = mid(" -",instr(a(i),"-")+1,1)&right("0"&abs(a(i)),2)&":00"
next
wscript.echo join(a,",")
'00:00, 05:00,-05:00, 15:00,-55:00
возвращает «000: 00» для e == 0, потому что Sgn (0) => 0. –
Вы, может быть, меня смешиваете с Алексеем? Мой ответ содержит все, что есть ... плюс предположение, что Алексей действительно имеет дело с форматом изображения HH: mm. – Filburt
@ Филбурт, вы правы, извините за смешение, отредактировал мой ответ, чтобы разобраться с значением 0 и получить право на право – peter
Просто для того, чтобы это разобраться: имеет ли желаемый результат формат HH: mm? – Filburt