Статья обновлена: 17 июля 2023
Для отображения текущей даты и времени в операционной системе Linux с помощью командной строки используйте команду date или команду timedatectl. Эти команды также могут отображать текущее время / дату в заданном ФОРМАТЕ. Мы также можем установить системную дату и время от имени пользователя root.
Состояние перевода:
На этой странице представлен перевод статьи System time
. Дата последней синхронизации: 4 февраля 2022. Вы можете помочь
синхронизировать перевод, если в английской версии произошли изменения
.
В операционной системе время (часы) определяется тремя понятиями: значением времени (будь то местное время, UTC или что-то другое), часовым поясом и информацией о переходе на летнее время (DST), если это применимо. Эта статья рассказывает, что это такое и как их читать и менять. В системах присутствуют двое часов: аппаратные часы и системные часы, которые также подробно описаны в этой статье.
Стандартное поведение большинства операционных систем таково:
- При загрузке для системных часов устанавливается значение из аппаратных часов.
- Поддерживается точное время системных часов; смотрите #Синхронизация времени
. - При выключении для аппаратных часов устанавливается значение из системных часов.
Regionally independent date time parsing
The output format of %DATE%
and of the dir
command is regionally dependent and thus neither robust nor smart. date.exe
(part of UnxUtils
) delivers any date and time information in any thinkable format. You may also extract the date/time information from any file with date.exe
.
Examples: (in a cmd-script use %% instead of %)
date.exe +"%Y%m%d %H%M%S: Any text"
20091222 185503: Any text
date.exe +"Text: %y/%m/%d-any text-%H.%M"
Text: 09/12/22-any text-18.55
Command: date.exe +"%m-%d """%H %M %S """"
07-22 “18:55:03″`
The date/time information from a reference file:
date.exe -r c:\file.txt +"The timestamp of file.txt is: %Y-%m-%d %H:%M:%S"
Using it in a CMD script to get year, month, day, time information:
for /f "tokens=1,2,3,4,5,6* delims=," %%i in ('C:\Tools\etc\date.exe +"%%y,%%m,%%d,%%H,%%M,%%S"') do set yy=%%i& set mo=%%j& set dd=%%k& set hh=%%l& set mm=%%m& set ss=%%n Using it in a CMD script to get a timestamp in any required format:
for /f "tokens=*" %%i in ('C:\Tools\etc\date.exe +"%%y-%%m-%%d %%H:%%M:%%S"') do set timestamp=%%i Extracting the date/time information from any reference file.
for /f "tokens=1,2,3,4,5,6* delims=," %%i in ('C:\Tools\etc\date.exe -r file.txt +"%%y,%%m,%%d,%%H,%%M,%%S"') do set yy=%%i& set mo=%%j& set dd=%%k& set hh=%%l& set mm=%%m& set ss=%%n Adding to a file its date/time information:
for /f "tokens=*" %%i in ('C:\Tools\etc\date.exe -r file.txt +"%%y-%%m-%%d.%%H%%M%%S"') do ren file.txt file.%%i.txt date.exe is part of the free GNU tools
which need no installation.
NOTE: Copying date.exe
into any directory which is in the search path may cause other scripts to fail that use the Windows built-in date
command.
New answer for an old question:
The question does not specify in what timezone. There are two reasonable possibilities:
- In UTC.
- In the computer’s local timezone.
#include "date.h"
#include <iostream>
int
main()
{ using namespace date; using namespace std::chrono; std::cout << system_clock::now() << '\n';
} Which just output for me:
2015-08-18 22:08:18.944211 The date library essentially just adds a streaming operator for std::chrono::system_clock::time_point
. It also adds a lot of other nice functionality, but that is not used in this simple program.
If you prefer 2 (the local time), there is a timezone library
that builds on top of the date library
. Both of these libraries are open source
and cross platform
, assuming the compiler supports C++11 or C++14.
#include "tz.h"
#include <iostream>
int
main()
{ using namespace date; using namespace std::chrono; auto local = make_zoned(current_zone(), system_clock::now()); std::cout << local << '\n';
} Which for me just output:
2015-08-18 18:08:18.944211 EDT The result type from make_zoned
is a date::zoned_time
which is a pairing of a date::time_zone
and a std::chrono::system_clock::time_point
. This pair represents a local time, but can also represent UTC, depending on how you query it.
With the above output, you can see that my computer is currently in a timezone with a UTC offset of -4h, and an abbreviation of EDT.
If some other timezone is desired, that can also be accomplished. For example to find the current time in Sydney , Australia just change the construction of the variable local
to:
auto local = make_zoned("Australia/Sydney", system_clock::now()); And the output changes to:
2015-08-19 08:08:18.944211 AEST Команда date находится в оболочке Bash, которая является оболочкой по умолчанию в большинстве дистрибутивов Linux и даже в macOS. В этом руководстве показано, как настроить дату в командной строке и как использовать ее в сценариях оболочки, чтобы делать больше, чем просто выводить время.
Запустите команду date, чтобы увидеть эту информацию. Он печатает текущую дату и время для вашего часового пояса:
date
Форматирование по умолчанию выглядит немного глупо. Почему год не печатается после месяца и дня, а не отмечается в конце, за часовым поясом? Не бойтесь: если он контролирует формат вывода, который вам нужен, date доставляет его в избытке. Есть более 40 опций, которые вы можете передать на сегодняшний день, чтобы дать указание форматировать вывод именно так, как вы хотите.
Чтобы использовать любой из параметров, введите дату, пробел, знак плюса + и параметр, включая начальный знак процента. Параметр% c (данные и время в формате локали) приводит к тому, что дата и время печатаются в нормализованном формате, связанном с вашей локалью. Ваш регион определяется географической и культурной информацией, которую вы предоставили при установке операционной системы. Регион определяет такие вещи, как символ валюты, размеры бумаги, часовой пояс и другие культурные нормы.
date +%c

Теперь год отображается в выводе в более естественном положении.
На сегодняшний день можно передать сразу несколько вариантов. Последовательность параметров называется строкой формата. Чтобы увидеть название дня (% A), день месяца (% d) и название месяца (% B), используйте эту команду:
date +%A%d%B

Это сработало, но некрасиво. Нет проблем, мы можем включать пробелы, если заключим всю строку формата в кавычки. Обратите внимание, что + выходит за рамки кавычек.
date +"%A %d %B"

Вы можете добавить текст в строку формата, например:
date +"Today is: %A %d %B"

Прокрутка даты вверх и вниз страница руководства
поиск нужного варианта вскоре становится утомительным. Мы разбили варианты на группы, чтобы вам было проще их обойти.
Иногда знание текущего времени на компьютере играет большую роль, например, при отслеживании выполнения тех или иных процессов. И далеко не всегда нужную информацию можно посмотреть через системный интерфейс Linux. Поэтому существуют различные команды для терминала.
В данной статье мы расскажем про то, как узнать текущее время Linux. Заодно упомянем тему часовых поясов и синхронизацию с серверами времени.
В системе Linux есть три удобных утилиты для определения точного времени. Наиболее продвинутой из них можно назвать date. Но и остальные имеют свои особенности.
С помощью date
Чтобы получить общую информацию, выполните команду:

Сначала выводится дата (день-число-месяц-год), время в 12-часовом формате с пометками AM (до полудня) и PM (после полудня) и часовой пояс. Информацию можно вывести в мировом UTC-формате:

Кроме того, для команды date можно самостоятельно задать форматирование вывода. Рассмотрим это на нескольких примерах с пояснениями. Первый вариант – вывод даты в привычном виде (день.месяц.год):

Форматирование задается после знака +
. Первый символ после знака %
интерпретируется как один из модификаторов. А остальные символы выводятся как обычный текст. Этим можно пользоваться:
date +'Какой сегодня день? Сегодня %e число %m месяца %Y года'

Еще один пример – вывод даты в кратком виде и времени в 24-часовом формате:
date +’%a %d.%m.%g %R’

Ну и не совсем стандартный вариант – вывести, какой это по счету день в году, и сам год:
date +'Сегодня %j день %Y года'

А если вы хотите поподробнее разобраться в команде date, то ознакомьтесь с данной статьей
. В ней детально описан синтаксис, опции, форматирование вывода и конкретные примеры использования. А мы переходим к следующему способу.
2. С помощью hwclock
Вообще утилита hwclock используется для настройки даты и времени в системе Linux. Но еще она подходит для простого вывода этой информации. Запускать ее следует с правами супер-пользователя:

Обратите внимание на формат вывода времени. Он включает в себя еще и миллисекунды. И через дефис указывается часовой пояс. По умолчанию это UTC. Ну а для вывода локального времени нужно добавить к команде опцию –localtime
:
sudo hwclock --localtime
3. С помощью timedatectl
Еще один вариант просмотра текущего времени – использование утилиты timedatectl. Достаточно ввести команду в терминале:

Помимо даты и времени, здесь есть следующие интересующие нас поля:
- Time zone
– часовой пояс. - System clock synchronized
– синхронизация часов с сервером. - NTP service
– подключение к серверу точного времени.
Выводы
Каждый из упомянутых в статье способов Как узнать текущее время Linux имеет свои особенности. Для утилиты date можно детально настроить форматирование вывода. hwclock подходит для беглого просмотра информации, ведь в основном используется для настройки. А через timedatectl получится узнать еще и статус синхронизации часов.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Об авторе
![]()
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Instant
ZonedDateTime
=Instant
+ZoneId
You can extract an Instant
from a ZonedDateTime
.
Instant instantNow = zdt.toInstant(); You can start with an Instant. No need to specify a time zone here, as Instant
is always in UTC.
Instant now = Instant.now(); Параметры, связанные с форматированием
% p: вывод индикатора AM или PM в верхнем регистре.
% P: Печатает индикатор am или pm в нижнем регистре. Обратите внимание на причуду этих двух вариантов. Строчная буква p соответствует прописной, а заглавная — строчной.
% t: печать табуляции.
% n: печатает новую строку.

Отображение даты и времени в Linux с помощью команды timedatectl
В большинстве современных дистрибутивов Linux с системой systemd используется команда timedatectl. Она используется для запроса и изменения системных часов и их настроек, а также для включения или отключения служб синхронизации времени. Все, что вам нужно сделать, это ввести следующую команду:

Update for C++20
This library is now largely adopted for C++20. The namespace date
is gone and everything is in namespace std::chrono
now. And use zoned_time
in place of make_time
. Drop the headers "date.h"
and "tz.h"
and just use <chrono>
.
#include <chrono>
#include <iostream>
int
main()
{ using namespace std::chrono; auto local = zoned_time{current_zone(), system_clock::now()}; std::cout << local << '\n'; // 2021-05-03 15:02:44.130182 EDT
} As I write this, partial implementations are just beginning to emerge on some platforms.
Еще два изящных трюка
Чтобы узнать время последней модификации файла, используйте параметр -r (ссылка). Обратите внимание, что здесь используется знак — (дефис) вместо знака% и не требуется знак +. Попробуйте эту команду в своей домашней папке:
date -r .bashrc

Настройка TZ позволяет вам изменять часовой пояс на время одной команды.
TZ=GMT date +%c

Time Zone
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime nowMontreal = instant.atZone( z ); Generate a String representation of that date-time value, localized.
String output = DateTimeFormatter .ofLocalizedDate( FormatStyle.FULL ) .withLocale( Locale.CANADA_FRENCH ) .format ( nowMontreal ); Нет ничего идеального. В том числе и часов. Время на любых часах хоть немного но отличается от реального. Одними из наиболее точных считаются атомные часы
. Кварцевые часы, используемые в компьютерах, также не являются абсолютно точными, зато имеют относительно постоянную погрешность.
При установке аппаратных часов с помощью hwclock
рассчитывается новое значение дрейфа в секундах в день. Значение дрейфа вычисляется с помощью разницы между новым установленным значением и значением аппаратных часов непосредственно перед установкой, с учётом значения предыдущего значения дрейфа и времени последней установки аппаратных часов. Новое значение дрейфа и время, когда часы были установлены, записываются в файл /etc/adjtime
, перезаписывая предыдущие значения. Таким образом, аппаратные часы могут быть скорректированы с учётом дрейфа при выполнении команды hwclock --adjust
; это также происходит при выключении, но только если демон hwclock
включен, поэтому в Arch-системах, использующих systemd, этого не происходит.
Примечание:
Если время аппаратных часов устанавливается повторно менее чем через 24 часа после предыдущей установки, дрейф не пересчитывается, поскольку hwclock
считает прошедший период времени слишком коротким для точного расчёта дрейфа.
Если аппаратные часы продолжают терять или набирать время с большим шагом, возможно, что был записан некорректный дрейф (но это применимо только в том случае, если запущен демон hwclock). Это может произойти, если вы неправильно установили время аппаратных часов или ваш стандарт времени
не совпадает со стандартом времени в Windows или macOS. Значение дрейфа можно сбросить, сначала удалив файл /etc/adjtime
, а затем установив правильное время аппаратных и системных часов. Затем следует проверить правильность используемого стандарта времени.
Примечание:
Если вы хотите использовать значение дрейфа, хранящееся в /etc/adjtime
, даже при использовании systemd (например, вы не можете или не хотите использовать NTP), вы должны регулярно вызывать hwclock --adjust
, например, создав задание cron
.
Программные часы очень точны, но, как и большинство часов, не идеально точны и могут дрейфовать. Хотя и редко, системные часы могут потерять точность, если ядро пропускает прерывания. Существуют некоторые инструменты для повышения точности программных часов; смотрите #Синхронизация времени
.
Tl;dr
Instant.now() Есть два основных стандарта времени: местное (локальное) время (localtime) и Всемирное координированное время
(Coordinated Universal Time, UTC). Местное время зависит от текущего часового пояса, а время UTC — это глобальное время, которое одинаково для всех и не зависит от часовых поясов. U TC иногда называют гринвичским временем
(GMT), хотя это немного разные вещи.
Стандарт, который будет использоваться в аппаратных часах, выбирается операционной системой. По умолчанию Windows использует местное время, macOS использует UTC, а другие UNIX и UNIX-подобные системы используют разные стандарты. О С, использующая стандарт UTC, обычно рассматривает аппаратные часы как UTC и вносит в них поправку для установки времени ОС при загрузке в соответствии с часовым поясом.
Если на машине установлено несколько операционных систем, все они будут получать текущее время от одних и тех же аппаратных часов: рекомендуется настроить их на использование UTC, чтобы избежать конфликтов. В противном случае, если аппаратные часы установлены на местное время, сразу несколько операционных систем могут попытаться скорректировать его, например, после перехода на летнее/зимнее время, что приведёт к избыточной коррекции; проблемы могут также возникнуть при перемещении между различными часовыми поясами и использовании одной из операционных систем для сброса системных/аппаратных часов.
Значение аппаратных часов можно прочитать и изменить с помощью команды timedatectl
.
Вы можете узнать текущий стандарт, который Arch использует для работы с аппаратными часами, с помощью следующей команды:
$ timedatectl | grep local
RTC in local TZ: no
Переход на использование местного времени для аппаратных часов:
# timedatectl set-local-rtc 1
Переход на использование UTC для аппаратных часов:
# timedatectl set-local-rtc 0
Эти команды автоматически обновят аппаратные часы и файл /etc/adjtime
, дополнительные действия не требуются.
Во время запуска ядра, в момент загрузки драйвера RTC, значение системных часов может быть установлено по аппаратным часам. Произойдет ли это, зависит от аппаратной платформы, версии ядра и опций сборки ядра. Если это происходит, то в этот момент последовательности загрузки время аппаратных часов принимается за UTC и значение /sys/class/rtc/rtcN/hctosys
(N=0,1,2,.) будет установлено в 1.
Позже systemd снова обновляет системное время по аппаратным часам, опираясь на значения в /etc/adjtime
. Следовательно, использование аппаратных часов с местным временем может привести к неожиданному поведению во время загрузки, например, системные часы могут перескочить назад по времени, что всегда является плохой идеей ( это ещё не всё
). Чтобы избежать этого, systemd будет синхронизироваться назад
, только если аппаратные часы установлены в UTC, и не будет информировать ядро о локальном часовом поясе. Как следствие, временные метки на файловой системе FAT, которые изменены через Linux, будут в UTC.
- Использование
timedatectl
требует активной шины D-Bus
. Поэтому использование этой команды под chroot
(например, во время установки) может оказаться невозможным. В таких случаях можно вернуться к команде hwclock или использовать systemd-nspawn
вместо chroot. - Если файл
/etc/adjtime
отсутствует, systemd по умолчанию считает, что аппаратные часы используют UTC.
UTC в Microsoft Windows
Это делается простым изменением в реестре: откройте regedit
и добавьте DWORD
ключ со значением 1
здесь:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal
Это можно сделать одной командой в командной строке, запущенной от имени администратора:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
Также можно создать *.reg
файл и импортировать его в реестр двойным щелчком мыши:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001
Если Windows попросит обновить часы в связи с изменениями DST, позвольте ей это сделать. Часы останутся в UTC, как и ожидалось, скорректируется только отображаемое время.
После этого #Аппаратные часы
и #Системные часы
может понадобиться обновить.
Если у вас проблемы со смещением времени, попробуйте переустановить и заново установить часовой пояс:
# timedatectl set-timezone Europe/Moscow
В очень старых версиях Windows это всё не работает из-за их багов. Более конкретно,
- В 64-битных версиях Windows 7 и старых сборках Windows 10 существовала ошибка, из-за которой требовалось значение
QWORD
со значением1
вместоDWORD
. Эта ошибка была исправлена в новых сборках, и теперь работает толькоDWORD
. - До Vista SP2 существовала ошибка, которая сбрасывала часы на местное время после возвращения из ждущего или спящего режима.
- В XP и более старых версиях есть ошибка, связанная с переходом на летнее время. Подробнее: [2]
- Для еще более старых версий Windows лучше прочитать https://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html
— тогда эта функциональность даже не была задокументирована и официально не поддерживалась.
Для этих операционных систем рекомендуется использовать местное время.
UTC в Ubuntu
Если Ubuntu на любом диске обнаруживает Windows в процессе установки, то для аппаратных часов она автоматически начинает использовать местное время. Очевидно, это сделано специально, чтобы позволить новым пользователям Linux опробовать Ubuntu на своих компьютерах с Windows без редактирования реестра.
Изменить это поведение можно так же, как описано выше.
Network Time Protocol
(NTP) — это протокол для синхронизации часов компьютерных систем в сетях передачи данных с коммутацией пакетов и переменной задержкой. Ниже приведены реализации NTP, доступные для Arch Linux:
- https://chrony.tuxfamily.org/
||
- https://01.org/connman (waybackmachine)
||
- https://www.ntp.org/
||
- ntpclient
— Простой NTP-клиент с интерфейсом командной строки.
- http://doolittle.icarus.com/ntpclient/
|| AUR
- https://ntpsec.org/
|| AUR
- https://www.openntpd.org/
||
- sntp
— Клиент SNTP
, который поставляется вместе с NTPd. Он заменяет ntpdate и рекомендуется в несерверных средах.
- https://www.ntp.org/
||
- systemd-timesyncd
— Простой демон SNTP
, который реализует только клиентскую часть, фокусируясь только на запросе времени с одного удалённого сервера. Он должен быть более чем подходящим для большинства установок.
- https://www.freedesktop.org/wiki/Software/systemd/
||
Варианты отображения дня

Переменная среды TZ
Среда TZ сообщает Linux, в каком часовом поясе вы находитесь. Во многих случаях, когда вы хотите временно изменить часовой пояс. Например, вы можете захотеть вывести текущую дату и время в часовом поясе “America/Los_Angeles”, хотя вы находитесь в “Europe/London”. Чтобы установить TZ, при использовании TCSH/CSH выполните следующую команду:
TZ="America/Los_Angeles" date
TZ="Asia/Tokyo" date 
timedatectl list-timezones timedatectl list-timezones | more timedatectl list-timezones | grep -i Hong_kong timedatectl list-timezones | grep -i paris timedatectl list-timezones | grep -E -i 'paris|london|kolkata' Узнать текущий часовой пояс, установленный в системе:
$ timedatectl status
Просмотр списка доступных часовых поясов:
$ timedatectl list-timezones
Изменение часового пояса:
# timedatectl set-timezone Регион / Город
# timedatectl set-timezone Europe/Moscow
# ln -sf /usr/share/zoneinfo/ Регион / Город /etc/localtime
Совет:
Можно найти и выбрать нужный часовой пояс с помощью интерактивного помощника tzselect
.
Смотрите и для более подробной информации.
Выбор на основе геолокации
Примечание:
Некоторые среды рабочего стола поддерживают автоматический выбор часового пояса (например, смотрите GNOME (Русский)#Дата и время
).
Обновление часового пояса после подключения к сети через NetworkManager
Создайте скрипт NetworkManager dispatcher
:
/etc/NetworkManager/dispatcher.d/09-timezone
#!/bin/sh case "$2" in up) timedatectl set-timezone "$(curl --fail https://ipapi.co/timezone)" ;; esac
UTC
Generally better to get in the habit of doing your back-end work (business logic, database, storage, data exchange) all in UTC
time zone. The code above relies implicitly on the JVM’s current default time zone.
The Instant
class represents a moment in the timeline in UTC with a resolution of nanoseconds.
Instant instant = Instant.now(); When you need more flexibility in formatting, transform into an OffsetDateTime
. Specify a ZoneOffset
object. For UTC use the handy constant for UTC
.
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ); Использование даты в скриптах
Включение сценария оболочки Bash для печати времени и даты тривиально. Создайте текстовый файл со следующим содержимым и сохраните его как gd.sh.
#!/bin/bash TODAY=$(date +"Today is %A, %d of %B") TIMENOW=$(date +"The local time is %r") TIME_UK=$(TZ=BST date +"The time in the UK is %r") echo $TODAY echo $TIMENOW echo $TIME_UK
Введите следующую команду, чтобы установить разрешения на выполнение и сделать скрипт исполняемым.
chmod +x gd.sh
Запустите сценарий с помощью этой команды:
./gd.sh

Мы можем использовать команду date для предоставления отметки времени. Показанный сценарий создаст каталог с отметкой времени в качестве имени. Затем он скопирует в нее все текстовые файлы из текущей папки. Периодически запуская этот скрипт, мы можем делать снимки наших текстовых файлов. Со временем мы создадим серию папок с разными версиями наших текстовых файлов.
Обратите внимание, что это не надежная система резервного копирования, это просто для иллюстративных целей.
Создайте текстовый файл со следующим содержимым и сохраните его как snapshot.sh.
#!/bin/bash # obtain the date and time date_stamp=$(date +"%F-%H-%M-%S") # make a directory with that name mkdir "$date_stamp" # copy the files from the current folder into it cp *.txt "$date_stamp" # all done, report back and exit echo "Text files copied to directory: "$date_stamp
Введите следующую команду, чтобы установить разрешения на выполнение и сделать скрипт исполняемым.
chmod +x snapshot.sh
Запустите сценарий с помощью этой команды:
./snapshot.sh

Вы увидите, что каталог был создан. Его имя — это дата и время выполнения сценария. Внутри этого каталога находятся копии текстовых файлов.
Если немного подумать и проявить изобретательность, можно продуктивно использовать даже скромную команду свидания.
ntpd -qg
Часы показывают значение, которое не является ни UTC, ни местным временем
Это может быть вызвано рядом причин. Например, если ваши аппаратные часы используют местное время, но timedatectl
настроен на то, чтобы считать, что они используют UTC, в результате смещение вашего часового пояса относительно UTC будет применено дважды, что приведёт к неправильным значениям местного времени и UTC.
Чтобы заставить ваши часы показывать правильное время, а также записать правильный UTC в ваши аппаратные часы, выполните следующие шаги:
- Настройте ntpd
(включать его как службу не обязательно). - Установите правильный
часовой пояс
.
Запустите
для ручной синхронизации ваших часов с сетью, игнорируя большие отклонения между локальным UTC и сетевым UTC.Запустите
hwclock --systohc
для записи текущего системного времени в аппаратные часы.
Варианты отображения месяца

Windows 11, 10
Как синхронизировать дату и время автоматически
- В правом нижнем углу экрана на панели задач найдите часы и нажмите на них правой кнопкой мыши.
- Проверьте, правильно ли указан ваш часовой пояс. Если часовой пояс указан неправильно, нажмите на него и выберите нужный из выпадающего списка.

- Нажмите Синхронизировать
, чтобы синхронизировать дату и время с сервером времени в интернете.

Как изменить дату и время вручную
- Установите переключатель Устанавливать время автоматически
для Windows 11 или Установить время автоматически
для Windows 10 в выключенное положение и нажмите Изменить
.

- Установите текущие дату и время и нажмите Изменить
.

ZonedDateTime
Get the current moment in java.time.
ZonedDateTime now = ZonedDateTime.now(); A ZonedDateTime
encapsulates:
- Date.
- Time-of-day, with a fraction of a second to nanosecond
resolution. - Time zone.
If no time zone is specified, your JVM’s current default time zone is assigned silently. Better to specify your desired/expected time zone than rely implicitly on default.
ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = ZonedDateTime.now( z ); Варианты отображения даты
% D: печатает дату в формате мм / дд / гг.
% F: печатает дату в формате гггг-мм-дд.
% x: печатает дату в формате для вашего региона.

Аппаратные часы
(они же часы реального времени (RTC) или часы CMOS) хранят следующие значения: год, месяц, день, час, минута и секунда. Только в прошивках UEFI
2016 года или новее есть возможность хранить часовой пояс, а также информацию о переходе на летнее время.
Просмотр времени из аппаратных часов
# hwclock --show
Изменение времени аппаратных часов по системным часам
Следующая команда устанавливает время в аппаратных часах, беря значение из системных часов. Кроме того, она обновляет файл или создаёт его, если он отсутствует. Смотрите раздел "The Adjtime File" в для более подробной информации, а также раздел
#Погрешность часов
.
# hwclock --systohc
Инструмент с графическим интерфейсом
Инструмент администрирования времени позволяет вам установить время, дату и часовой пояс вашей системы, а также установить любой сервер времени для синхронизации вашего локального сервера времени. Введите следующую команду, чтобы запустить инструмент администрирования времени:
Вам может быть предложено ввести пароль администратора (пароль root), это необходимо, так как изменения, сделанные с помощью этого инструмента, повлияют на всю систему.
Как изменить настройки даты и времени в рабочем столе Linux на базе Gnome
Во-первых, вам нужно Настройки в Деятельности, а затем нажмите Детали в боковой панели. Обязательно нажмите Дата и время в боковой панели, чтобы открыть панель:
![]()
Варианты отображения часа
![]()
Оптимальная защита для Windows
Kaspersky for Windows защищает вашу цифровую жизнь, выходя за рамки обычного антивируса.
Windows 8, 8
- Перейдите на рабочий стол и в правом нижнем углу экрана на панели задач найдите часы. Нажмите на часы правой кнопкой мыши и выберите Изменение настроек даты и времени .
![]()
- Проверьте, правильно ли указан ваш часовой пояс. Если часовой пояс указан неправильно, нажмите Изменить часовой пояс .
![]()
- Выберите ваш часовой пояс в выпадающем списке и нажмите OK .
![]()
- Перейдите на вкладку Время по Интернету и нажмите Изменить параметры , чтобы синхронизировать дату и время с сервером времени в интернете.
![]()
- Нажмите Обновить сейчас . Дождитесь окончания синхронизации и нажмите OK .
![]()
Как изменить дату и время вручную
- Перейдите на вкладку Дата и время и нажмите Изменить дату и время .
![]()
- Установите текущие дату и время и нажмите ОК .
![]()
Синтаксис
Откройте приложение терминала и введите следующую команду:
Команда Date вернет следующий результат
![]()
Вы можете отформатировать дату следующим образом в формате dd-mm-yy:
![]()
Простое отображение текущего времени в Linux:
![]()
Чтобы вывести дату позавчерашнего дня, выполните:
Хотите узнать день года Рождества в текущем году? Попробуйте:
Выведите полное название текущего месяца и день месяца:
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );Получение текущего времени в секундах с момента наступления эпохи Linux
timedatectl Параметры отображения даты и времени ntpd -qg Параметры отображения минут
Java. time
The java.util. Date class has been outmoded by the new java.time package
(Tutorial
) in Java 8 and later. The old java.util. Date/. Calendar classes are notoriously troublesome, confusing, and flawed. Avoid them.
InstantWindows Vista, 7В правом нижнем углу экрана на панели задач найдите часы. Нажмите на часы правой кнопкой мыши и выберите Изменение настроек даты и времени
OffsetDateTime
.
Instant instant = Instant.now();
ZoneOffset
Проверьте, правильно ли указан ваш часовой пояс. Если часовой пояс указан неправильно, нажмитеИзменить часовой пояс
.
Выберите ваш часовой пояс в выпадающем списке и нажмите
OK.
![]()
Перейдите на вкладку
Время по Интернетуи нажмитеИзменить параметры
, чтобы синхронизировать дату и время с сервером в интернете.
Нажмите
Обновить сейчас
. Дождитесь окончания синхронизации и нажмитеOK
.
Как изменить дату и время вручную
Перейдите на вкладку Дата и время.
Нажмите
Изменить дату и время
.
Установите текущие дату и время и нажмите ОК
.

Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Параметры отображения информации о часовом поясе
% z: печатает разницу во времени между вашим часовым поясом и UTC.
%: z: печатает разницу во времени между вашим часовым поясом и временем в формате UTC с: между часами и минутами. Обратите внимание на: между знаком% и z.
% :: z: выводит разницу во времени между вашим часовым поясом и временем в формате UTC с: между часами, минутами и секундами. Обратите внимание на :: между знаком% и z.
% Z: печатает буквенное название часового пояса.

Системные часы
(они же программные часы) отслеживают время, часовой пояс и информацию о переходе на летнее время, если применимо. В ядре Linux они представлены как количество секунд, прошедших с полуночи 1 января 1970 года по UTC. Начальное значение системных часов вычисляется из аппаратных часов в зависимости от содержимого файла /etc/adjtime
. После завершения загрузки системные часы работают независимо от аппаратных часов. Ядро Linux отслеживает системные часы путём подсчета прерываний таймера.
Для проверки текущего времени системных часов (представленных как в местном времени, так и в UTC), а также RTC (аппаратных часов):
$ timedatectl
Изменение времени системых часов
Установка местного времени для системых часов:
# timedatectl set-time "гггг-ММ-дд чч:мм:сс"
# timedatectl set-time "2014-05-26 11:13:54"
Установит 26 мая 2014 года, 11 часов 13 минут 54 секунды.
Настройки для пользователя/сессии или временные настройки
В некоторых случаях может быть полезно изменить настройки времени, не затрагивая глобальные системные значения. Например, для тестирования приложений, полагающихся на время во время разработки, или для настройки системного часового пояса при удалённом входе на сервер из другой зоны.
Чтобы заставить приложение «видеть» дату/время, отличное от системного, можно воспользоваться утилитой (из пакета ).
Если вы хотите, чтобы приложение «видело» часовой пояс, отличный от системного, установите переменную окружения
TZ
, например:
$ date && export TZ=":/usr/share/zoneinfo/Pacific/Fiji" && date
Вт 01 ноя 2016 16:34:51 MSK Ср 02 ноя 2016 01:34:51 +12
Это отличается от простой установки времени, поскольку, например, позволяет протестировать поведение программы с положительными или отрицательными значениями смещения UTC, или влияние изменений летнего/зимнего времени при разработке на системах с часовым поясом, в котором нет переходов на летнее/зимнее время.
Другим вариантом использования является установка разных часовых поясов для разных пользователей одной системы: это можно сделать, установив переменную TZ
в конфигурационном файле оболочки; смотрите Переменные окружения#Установка переменных
.
Параметры для изменения других параметров
Эти модификаторы могут быть вставлены между% и буквой параметра других параметров, чтобы изменить их отображение. Например,% -S удалит ведущий ноль для однозначных значений секунд.
-: одиночный дефис предотвращает заполнение нулями однозначных значений.
_: одиночное подчеркивание добавляет ведущие пробелы для однозначных значений.
0: предоставляет ведущие нули для однозначных значений.
^: Если возможно, используются прописные буквы (не все параметры соответствуют этому модификатору).
#: По возможности используйте для параметра регистр, противоположный стандартному (не все параметры соответствуют этому модификатору).

- Linux Tips - Linux, Clocks, and Time
- An introduction to timekeeping in Linux VMs
- Источники данных, определяющие часовые пояса и переход на летнее время
для пакета - Time Scales
- Gentoo:System time
- Время
(Википедия)
Варианты отображения недели
% U: выводит номер недели в году, считая воскресенье первым днем недели. Например, третья неделя года, двадцатая неделя года и т. Д.
% V: выводит номер недели года по стандарту ISO, считая понедельник первым днем недели.
% W: номер недели в году, считая понедельник первым днем недели.

Варианты отображения времени
% T: печатает время в формате ЧЧ: ММ: СС.
% R: часы и минуты печатаются в формате ЧЧ: ММ без секунд в 24-часовом формате.
% r: печатает время в соответствии с вашим языком, используя 12-часовой формат и индикатор до или после полудня.
% X: печать времени в соответствии с вашим языком в 24-часовом формате. Якобы. Обратите внимание, что во время тестирования эта опция вела себя точно так же, как% r, как показано ниже. На компьютере с Linux, настроенном для локали Великобритании и установленном на GMT, он печатал время, используя 24-часовые часы без индикатора AM или PM, как и ожидалось.

Варианты отображения года
% C: Печатает век без года. В 2019 году он напечатает 20.
% y: выводит год в виде двух цифр. в 2019 году напечатает 19.
% Y: вывод года в виде четырех цифр.

Варианты отображения секунд

Заключение
В этом кратком руководстве вы узнали о команде date, которую можно использовать для просмотра или изменения даты/времени в операционных системах Linux. Далее мы объяснили, как использовать инструменты графического интерфейса. Команда date имеет множество дополнительных опций. Посмотрите страницу man, набрав следующую команду man:
man date
man bash
man ksh
man timedatectl Советы и рекомендации
alarm-fake-hwclock
разработан специально для систем без нормально работающих аппаратных часов. Он включает в себя службу systemd, которая при выключении сохраняет текущее время, а при следующем запуске восстанавливает сохранённое время, таким образом избегая странных ошибок путешествия во времени.
Установите
пакет AUR
, запустите
и включите
службу fake-hwclock.service
.


