Что такое оператор командной строки для изменения системных часов?

50

Есть ли такая команда для изменения даты и времени Системных часов?

Например:

Текущая дата и время - это January 1, 1970 22:30:59:980где 59 и 980 относятся к секундам и миллисекодам соответственно.

И я хочу изменить это на January 2, 1971 23:31:59:990

Есть ли команда для этого?

Абель Мелькиадес Каллехо
источник
На всякий случай, если кто-то заинтересован в смене часового пояса. askubuntu.com/questions/3375/…
nassim

Ответы:

57

Чтобы установить время в Ubuntu с терминала, вы можете использовать следующую команду:

sudo date new_date_time_string

где new_date_time_stringдолжен следовать формат, MMDDhhmmyyyy.ssкоторый описан ниже:

  • MM двухзначный месяц, от 01 до 12
  • DD это двузначный день от 01 до 31 с обычными правилами для дней в зависимости от месяца и года
  • hh является двухзначным часом, используя 24-часовой период, так что это между 00 и 23
  • mm двузначная минута, от 00 до 59
  • yyyyэто год; это может быть две цифры или четыре цифры
  • ssэто две цифры секунды. Обратите внимание на период .до ss.

Источник: Управление временем в Ubuntu через командную строку .

Итак, в вашем конкретном случае вы можете использовать:

sudo date 010224311971.59

Или вы можете использовать:

sudo date --set="1971-01-02 23:31:59.990"  && date --rfc-3339=ns

это именно то, что вы спросили.

Источник: https://serverfault.com/a/338395/181186 .

Раду Рэдяну
источник
каков фактический формат строки даты?
Абель Мелькиадес Каллехо
Означает ли это, что точность может быть ограничена только секундами ?
Абель Мелькиадес Callejo
@AbelMelquiadesCallejo Смотрите мои новые правки.
Раду Рэдяну
1
Может кто-нибудь объяснить? hhнаходится между 00 и 23, но OP и этот ответ показывают, что он установлен на 24.
Карл Х
@CarlH Отличный улов! Смотрите новые правки
Abel Melquiades Callejo
16

Простой способ:

ntpdate -s ntp.ubuntu.com

Чтобы изменить часовой пояс:

dpkg-reconfigure tzdata

Наверное, вам нужно sudo.

Ninecols
источник
4
Интересно, какой NTP-сервер будет устанавливать время на январь 1971 года?
Муру
Ваш сервер подключен к интернету? Проверьте официальную документацию по адресу help.ubuntu.com/lts/serverguide/NTP.html
Ninecols
4

Вы можете использовать dateкоманду, чтобы изменить время, и вам потребуется sudoразрешение для этого; Пример установки даты на 27 июня 2014 года и времени на 1:17:

sudo date --set "27 Jun 2014 1:17:00"
aabhas
источник
3

Поскольку systemd был представлен в Ubuntu, правильный путь:

# timedatectl set-time "RFC 3339-compliant string"

например

# timedatectl set-time "2002-10-02T10:00:00-05:00"
# timedatectl set-time "10:35"
# timedatectl set-time "+2 hours"
jojman
источник
Это также работает, например sudo date --set="+2 hours", что именно то, что мне нужно.
Эмиль Врейдагс
0

Короткие версии для установки только даты или времени:

Чтобы установить дату (установим время на 0: 0: 0):

date +%Y%m%d -s "19710102"

Чтобы установить только время:

date +%T -s "23:31:59"

Вы можете добавить желаемый ".990" к секундам.

Прочтите справочную страницу для получения дополнительных опций и форматов, касающихся команды date:

man date

Примечание: вы также можете проверить или установить аппаратные часы. Читайте об этом здесь .

elomage
источник
-3
sudo date --set="Mon Feb 16 08:49:56 IST 2015"

Это было бы правильным заявлением в UBUNTU 14.04.

Soumya Kanti Naskar
источник
1
Только для всех в часовом поясе IST? Другой ответ не работает для вас?
Xen2050
Вопрос не требует смены часового пояса.
Абель Melquiades Callejo