This post explains how to get current date and time from command prompt or in a batch file.
How to get date and time in a batch file
Below is a sample batch script which gets current date and time
Datetime.cmd
@echo off for /F "tokens=2" %%i in ('date /t') do set mydate=%%i set mytime=%time% echo Current time is %mydate%:%mytime%
When we run the above batch file
C:\>datetime.cmd Current time is 08/12/2015:22:57:24.62 C:\>
Get date from command line
To print today’s date on the command prompt, we can run date /t
.
c:\>date /t Thu 05/14/2015 c:\>
Just running date
without any arguments prints the current date and then prompts to enter a new date if the user wants to reset it.
c:\>date The current date is: Sat 05/16/2015 Enter the new date: (mm-dd-yy) c:\>
In addition to date command, we also have an environment variable using which we can find today’s date.
c:\>echo %date% Sun 05/17/2015
How to get only the date in MM/DD/YYYY format?
You may want to exclude the day (like ‘Sun’ in the above example) and print only the date in MM/DD/YYYY format. The below command works for the same.
for /F "tokens=2" %i in ('date /t') do echo %i
Example:
c:\>for /F "tokens=2" %i in ('date /t') do echo %i 05/14/2015 c:\>
Get time from command prompt
Similar to date command, we have the command time
which lets us find the current system time. Some examples below.
c:\>time /t 11:17 PM c:\>time The current time is: 23:17:18.57 Enter the new time: c:\>
As you can see, the command prints the time in different formats. It prints in 12 hour format when /t
is added and in 24 hours format without /t
We can also get the current time from environment variables.
c:\>echo %time% 23:23:51.62 c:\>
Get date and time
c:\>echo %date%-%time% Sun 05/17/2015-23:21:03.34
Иногда требуется сформировать переменную даты и времени в cmd / bat скриптах windows так, как нужно нам, а не так, как нам отдаёт операционная система.
Например чтоб добавить эти данные в log файл, для фиксации времени или даты события, создать файл с именем, в котором должны фигурировать данные даты или времени (день, месяц, год, час, минуты, скунды, миллисекунды.) Да мало-ли, какие у нас задачи… Подключаем нашу фантазию
В следующем примере мы видим разбиение переменных по нужным нам шаблонам.
h- час 2 знака (то есть час будет выдаваться в следующем виде — 01, 02, …, 09, … , 12, … 24)
m — минуты 2 знака
s — секунжы 2 знака
ms — миллисекунды 2 знака, почему-то от 0 до 99
dd — день 2 знака
mm — месяц 2 знака
yyyy — год 4 знака
Пример использования переменных %DATE% и %TIME% в скриптах cmd / bat Windows:
@echo off
set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%
set ms=%TIME:~9,2%
set curtime=%h%:%m%:%s%:%ms%
set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set curdate=%dd%-%mm%-%yyyy%
set curdatetime=%curdate% %curtime%
echo Текущее время — %curdatetime%
В некоторых версиях Windows формат выдачи даты и времени другой, поэтому данный скрипт может работать совсем так как нам нужно.
По идее, подобным способом можно брать части любых переменных, суть в том что формат здесь такой:
%DATE:~3,2%
Первая цифра после :~ — это номер символа, с которого мы начинаем брать значение, вторая цифра это сколько символов захватывать.
Таким образом получается что мы можем взять для своих нужд любую часть, любой доступной нам переменной среды Windows.
Мне известны следующие переменные, значения которых мы можем получить:
Имя
ALLUSERSPROFILE | Возвращает размещение профиля «All Users». |
APPDATA | Возвращает используемое по умолчанию размещение данных приложений. |
CD | Указывает путь текущей папки. Идентична команде CD без аргументов. |
CMDCMDLINE | точная команда использованная для запуска текущего cmd.exe. |
CMDEXTVERSION | версия текущего Command Processor Extensions. |
CommonProgramFiles | Расположение каталога «Common Files» (обычно %ProgramFiles%\Common Files) |
COMPUTERNAME | имя компьютера |
COMSPEC | путь до исполняемого файла shell |
DATE | Возвращает текущую дату. Использует тот же формат, что и команда date /t. Создается командой Cmd.exe. |
ERRORLEVEL | Возвращает код ошибки последней использовавшейся команды. Значение, не равное нулю, обычно указывает на наличие ошибки. |
HOMEDRIVE | Возвращает имя диска локальной рабочей станции, связанного с основным каталогом пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы». |
HOMEPATH | Возвращает полный путь к основному каталогу пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы». |
HOMESHARE | Возвращает сетевой путь к общему основному каталогу пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы». |
LOGONSERVER | имя контроллера домена, использовавшегося для авторизации текущего пользователя |
NUMBER_OF_PROCESSORS | количество процессоров в системе |
OS | название операционной системы. Windows XP и Windows 2000 отображаются как Windows_NT. |
PATH | Указывает путь поиска для исполняемых файлов. |
PATHEXT | Возвращает список расширений файлов, которые рассматриваются операционной системой как исполняемые. |
PROCESSOR_ARCHITECTURE | архитектура процессора |
PROCESSOR_IDENTIFIER | описание процессора |
PROCESSOR_LEVEL | номер модели процессора |
PROCESSOR_REVISION | ревизия процессора |
PROGRAMFILES | путь к папке Program Files |
PROMPT | Возвращает параметры командной строки для текущего интерпретатора. Создается командой Cmd.exe. |
RANDOM | случайное десятичное число от 0 до 32767. Генерируется Cmd.exe |
SESSIONNAME | Тип сессии. Значение по умолчанию «Console» |
SYSTEMDRIVE | диск на котором расположена корневая папка Windows |
SYSTEMROOT | путь к корневой папке Windows |
TEMP or TMP | Возвращает временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP. Потенциально TEMP и TMP могут указывать на разные каталоги, но обычно — совпадают. |
TIME | Возвращает текущее время. Использует тот же формат, что и команда time /t. Создается командой Cmd.exe. |
USERDOMAIN | имя домена, которому принадлежит текущий пользователь |
USERNAME | имя текущего пользователя |
USERPROFILE | путь к профайлу текущего пользователя |
WINDIR | директория в которую установлена Windows |
Описание
Overview
The DATE
command in Windows Command Prompt (CMD) allows users to display or set the system date. While primarily used for managing and modifying the date settings on a computer, this command can be essential for scripts that depend on date-specific processes or for administrative tasks requiring date verification or updates.
Syntax
The basic syntax for the DATE
command is:
DATE [/T | date]
DATE
with no parameters will display the current date and prompt the user to enter a new date (if permissions allow)./T
displays the current date without prompting for a new one.
When setting the date, the format you need to use can depend on your system locale settings, typically MM-DD-YYYY
in the United States.
Options/Flags
/T
: Displays the current date without prompting for a new date. Useful for scripts where you need to echo the current date without making changes.
By default, if you use DATE
with no flags, it will prompt you to enter a new date.
Examples
-
Display the current date:
DATE /T
Output might be
Tue 05/23/2023
depending on system settings. -
Set a new date:
DATE
This will prompt the user to enter a new date like
Enter new date (mm-dd-yy):
where the user needs to input the date as required.
Common Issues
- Permission Errors: When trying to set the date, you might encounter permission errors if not executed with administrative privileges. Run CMD as administrator to resolve.
- Format Confusion: Users often make mistakes related to the date format, especially in regions with different date formats (e.g., DD-MM-YYYY vs. MM-DD-YYYY). Always check your system’s locale settings.
Integration
The DATE
command can be integrated with other commands for automated scripts and logging. For example, creating a file with a date stamp in its name:
ECHO Hello, World! > Logfile_%date:/=%time::=s%.txt
This command sequence takes the current date and time, removes undesirable characters, and uses them in a filename, useful for time-stamped logging.
TIME
: Similar toDATE
, but for displaying or setting the system time.TIMESTAMP
: Used in scripts for logging or file creation with a timestamp.- More complex date manipulations may require PowerShell or external tools/scripts.
For further reading and more detailed information, refer to the Microsoft official documentation for CMD at: Windows Command Line Documentation.
Здравствуйте,野心勃勃ые программисты! Сегодня мы окунемся в fascinирующий мир дат и времени в скриптах Batch. Как ваш доброжелательный сосед-преподаватель информатики, я рад помочь вам в этом путешествии. Не волнуйтесь, если вы никогда раньше не писали ни строчки кода — мы начнем с азов и постепенно поднимемся. Так что достаньте свои виртуальные блокноты, и давайте начнем!
Команда DATE
Команда DATE в скриптах Batch resembles ваш цифровой календарь. Он позволяет вам viewed или изменить текущую дату на вашем компьютере. Давайте посмотрим, как еe использовать!
Просмотр текущей даты
Чтобы viewed текущую дату, просто введите:
DATE
Когда вы выполните эту команду, вы увидите что-то вроде:
Текущая дата: Пн 17.04.2023
Введите новую дату: (мм-дд-гг)
Вот интересный факт: однажды у меня был студент, который использовал эту команду, чтобы проверить, день ли это его рождения. Он был так взволнован, когда это действительно оказалось так!
Изменение даты
Чтобы изменить дату, вы можете ввести новую дату, когда вас спросят. Например:
DATE 18-04-2023
Это изменит дату на 18 апреля 2023 года. Но будьте осторожны! Изменение системной даты может повлиять на различные приложения и процессы.
Использование DATE в скриптах
Теперь давайте посмотрим, как мы можем использовать команду DATE в наших скриптах. Вот простой пример:
@echo off
echo Сегодняшняя дата:
date /t
pause
В этом скрипте:
-
@echo off
предотвращает отображение команд. -
echo Сегодняшняя дата:
выводит сообщение. -
date /t
отображает текущую дату без запроса новой даты. -
pause
оставляет окно открытым, чтобы вы могли увидеть результат.
Команда TIME
Как и DATE, команда TIME позволяет viewed или изменить текущее время на вашем компьютере. Это как если бы у вас был цифровой будильник у вас под рукой!
Просмотр текущего времени
Чтобы viewed текущее время, просто введите:
TIME
Вы увидите что-то вроде:
Текущее время: 14:30:45.52
Введите новое время:
Изменение времени
Чтобы изменить время, введите новое время, когда вас спросят:
TIME 15:45
Это изменит время на 3:45 PM.
Использование TIME в скриптах
Давайте создадим скрипт, который отображает и дату, и время:
@echo off
echo Текущая дата и время:
date /t
time /t
pause
Этот скрипт покажет вам текущую дату и время без запроса изменений.
Дата в формате Год-Месяц-День
Иногда вам может потребоваться displayed дату в определенном формате, например Год-Месяц-День. Скрипты Batch не имеют встроенной команды для этого, но мы можем создать собственное решение с использованием переменных окружения.
Вот скрипт, который displayed дату в формате ГГГГ-ММ-ДД:
@echo off
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
set year=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%
echo Текущая дата: %year%-%month%-%day%
pause
Давайте разберем это:
- Цикл
for
выполняет командуwmic
, чтобы получить локальное время и дату. - Мы извлекаем информацию о дате в переменные:
year
,month
иday
. - Наконец, мы displayed дату в desired формате.
Этот скрипт может показаться немного сложным, но он действительно мощный. Помню, как один студент использовал это, чтобы автоматически проставлять даты на своих домашних заданиях!
Полезные методы даты и времени
Вот таблица некоторых полезных методов даты и времени в скриптах Batch:
Метод | Описание | Пример |
---|---|---|
DATE /T | Отображает текущую дату | DATE /T |
TIME /T | Отображает текущее время | TIME /T |
%DATE% | Переменная окружения для текущей даты | echo %DATE% |
%TIME% | Переменная окружения для текущего времени | echo %TIME% |
wmic os get localdatetime | Получает дату и время в формате ГГГГММДДЧЧММСС | wmic os get localdatetime |
Помните, практика делает perfect! Попробуйте написать скрипты, которые используют эти команды по-разному. Может быть, создайте цифровой будильник или скрипт, который calculates, сколько дней до вашего следующего дня рождения.
В заключение, работа с датами и временем в скриптах Batch открывает мир возможностей. От простых отображений дат до сложных вычислений времени, эти инструменты могут быть incredibly полезны в вашем пути программирования. Продолжайте экспериментировать и не бойтесь ошибаться — так мы учимся!
Счастливого программирования, будущие программисты!
Credits: Image by storyset
В современных компьютерах сменить дату и время не составляет большого труда, достаточно перейти в панель задач. Также вы можете проделать это через командную строку и не заметно для пользователя.
Запускаем командную строку («Win+R» — «cmd») и набираем «time«, после пробела ставим желаемую дату в формате ЧЧ:MM:СС, жмем Enter и смотрим в трей.
Пример:
time 15:38:00
Аналогичные действия проделываем и с датой, вот только вместо time набираем — «date» и саму дату в формате ЧЧ.ММ.ГГГГ:
date 14.04.2016
Получить список часовых поясов
TZUTIL /l
Получить информацию о часовом поясе на данном ПК
TZUTIL /g
Установить часовой пояс
TZUTIL /s "Yakutsk Standard Time"