Я пытаюсь создать произвольное время, используя пакетные файлы. Я пытаюсь вычесть заданные значения (например, 1 день, 1 месяц и 2000 лет) из моего кода, чтобы отобразить системное время, вычтенное из заданных значений, указанных ранее. Для часов и минут я вычитаю 10 часов и 10 минут (показаны в коде как разные значения). Я также знаю, что дата и время являются переменными, связанными с моей системой. ~ Пожалуйста, игнорируйте
Важно -
Моя проблема сейчас с этой частью:
if %minb% EQU 60 set /a minb=%minb%-60 & set /a hourb=%hourb%+1
if %hourb% EQU 24 set /a hourb=%hourb%-24 & set /a dayb=%dayb%+1
if %dayb% EQU 30 set /a dayb=%dayb%-30 & set /a monthb=%monthb%+1
if %monthb% EQU 12 set /a monthb=%monthb%-12 & set /a yearb=%yearb%+1
Кажется, я не могу сбросить минуты до 0 и добавить часы в 1, когда значение минуты достигает 60 , и то же самое с часом, днем, месяцем, месяцем -летние отношения, кроме этого, проблемы с моим кодом в основном исправлены . Когда я запускаю код и жду, пока минуты (или прибавят к разнице во времени) достигнут 60, они просто пропускают 60 и не сбрасываются и не добавляют к значению clockb.
.
Мои форматы даты и времени:
- Краткая дата: М / д / гггг
- Длинная дата: дддд, мммм д, гггг
- Короткое время: ч: мм
- Долгое время: ч: мм: сс
Я использую Windows 10.
Обратите внимание, что значения в наборе / a не соответствуют моему описанию, но, конечно, их можно изменить. Они установлены на показанные номера только для целей тестирования.
EDIT:
Код:
@echo off
:start
set day=%date:~-7,2%
set month=%date:~-10,2%
set year=%date:~-4,4%
set hour=%time:~0,2%
set min=%time:~3,2%
set /a "hourb=%hour%-10"
set /a "minb=%min%+30"
set /a "dayb=%day%-1"
set /a "monthb=%month%-1"
set /a "yearb=%year%-2000"
if %minb% lss 10 set minb=0%minb%
if %hourb% lss 10 set hourb=0%hourb%
if %dayb% lss 10 set dayb=0%dayb%
if %monthb% lss 10 set monthb=0%monthb%
if %minb% EQU 60 set /a minb=%minb%-60 & set /a hourb=%hourb%+1
if %hourb% EQU 24 set /a hourb=%hourb%-24 & set /a dayb=%dayb%+1
if %dayb% EQU 30 set /a dayb=%dayb%-30 & set /a monthb=%monthb%+1
if %monthb% EQU 12 set /a monthb=%monthb%-12 & set /a yearb=%yearb%+1
cls
:: ———————————————————————–
@mode con cols=20 lines=6
title Arbitrary Clock
:time
echo.
echo. %hourb%:%minb%
echo.
echo. %dayb%-%monthb%-%yearb%
echo.
ping -n 2 0.0.0.0 >nul
cls
goto :start
Хорошо, так как вы можете видеть в новом редактировании кода, я установил значения, указанные в начале этого вопроса. Вычитая 10 из часов, вычитая 1 из дней и месяцев, и вычитая 2000 из лет. Я добавил 30 минут, чтобы показать проблему прямо сейчас.
Так что мое системное время составляет 4: 40, 1/5 / 2019. Хорошо?
Отображаемое время на часах: 06: 70, 04-00-19.
Желаемый результат: 07: 10, 04-12-18.
Это было отредактировано. Заранее спасибо.