2012-05-29 4 views
0

Мне нужны значения, такие как 05:00, -05: 00, когда на входе есть числовые значения 5, -5..Если на входные значения, например 10, -12, то не нужно добавлять ведущие нули .. Я могу создать некоторую функцию, которая проверяет, сколько цифр имеет число, а затем добавить, если нужно, «0», но, возможно, у кого-то есть лучшее решение?Добавить ведущее ноль к номерам

+1

Просто для того, чтобы это разобраться: имеет ли желаемый результат формат HH: mm? – Filburt

ответ

2

Ближайшая вещь, которую я могу найти, чтобы помочь с этим, - это функция 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

Надежда, что помогает

+0

это дало бы «0-5» для -5 – Filburt

+0

Хороший улов, я поставляю псевдокод здесь, но я обновил его, чтобы правильно обрабатывать отрицательные числа. –

+0

ToString не vbscript, Abs (x) даже не объект – peter

1

Попробуйте

Function FormatHour (input) 
    Dim sign 
    If (input < 0) Then 
     sign = "-" 
    End If 

    FormatHour = sign & FormatDateTime(TimeSerial(Abs(input), 0, 0), vbShortTime) 
End Function 
+0

Почему вы предполагаете, что это дата/время? Сообщение помечено как Numbers not Date или Time, поэтому, если по какой-то причине это решение не работает. Более того, я никогда не видел отрицательного времени до этого, есть ли особый формат страны, о котором я не знаю? –

+0

Потому что 05:00 не похож на число, а час: минутное представление. В любом случае использование FormatDateTime дает вам желаемый формат, не слишком много конкатенации ;-) – Filburt

+0

Да, это похоже на то, что происходит с тем, что предоставил OP. Мне было бы любопытно, если они скажут, что пришло время, не знаю, почему вам понадобится отрицательное время. Спасибо, что опубликовал комментарий к OP. –

0

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

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 
+0

возвращает «000: 00» для e == 0, потому что Sgn (0) => 0. –

+0

Вы, может быть, меня смешиваете с Алексеем? Мой ответ содержит все, что есть ... плюс предположение, что Алексей действительно имеет дело с форматом изображения HH: mm. – Filburt

+0

@ Филбурт, вы правы, извините за смешение, отредактировал мой ответ, чтобы разобраться с значением 0 и получить право на право – peter