Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


wlad1164, ошибка возникает из-за того, что командная строка считает числа начинающиеся с нуля в восьмеричной системе счисления, отсюда 08, например, будет недопустимым значением для данной СЧ. Чтобы избежать подобной ошибки нужно значения вроде того же 08 приводить к тому, что в понимании командного интерпретатора будет десятичным числом. Иначе говоря:
Код: Выделить весь код
set /a "n=10%var%%%100"
Исправленный вариант с julianday будет выглядеть так:
Код: Выделить весь код
@echo off
  setlocal
    2>nul set /a "d1=180312, d2=180508" % rem : даты, между которыми будет считаться разница
    call:expandDate %d1% d1
    call:expandDate %d2% d2
    set /a "delta=d2-d1"
    echo %delta%
  endlocal
exit /b

:expandDate
  set "d=%~1"
  set /a "a=10%d:~4,2%%%100, b=10%d:~2,2%%%100"
  call:toJulianDay %a% %b% 20%d:~0,2%
  set "%~2=%jdn%"
exit /b

:toJulianDay
  set /a "jdn=(1461*(%3+4800+(%2-14)/12))/4+(367*(%2-2-12*((%2-14)/12)))/12-(3*((%3+4900+(%2-14)/12)/100))/4+%1-32075"
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:15, 08-06-2018 | #10