Вы можете использовать, например, date --set='-2 years'установить часы на два года назад, оставив все остальные элементы идентичными. Вы можете изменить месяц и день месяца таким же образом. Я не проверял, что произойдет, если в результате этих вычислений дата и время фактически не будут существовать, например, во время перехода на летнее время, но поведение должно быть идентичным обычному поведению «установить и дату, и время для конкретных значений».
Кристиан Северин
Предполагая, что вы пытаетесь установить дату на текущее время, вы можете сделать так, sudo ntpd -gqчтобы система автоматически обновлялась с помощью службы ntp.
Запустите это как root или под sudo. Изменение только одного из года / месяца / дня является более сложной задачей и будет включать повторяющиеся биты текущей даты. Существуют также инструменты даты с графическим интерфейсом, встроенные в основные среды рабочего стола, доступ к которым обычно осуществляется через часы.
Чтобы изменить только часть времени, вы можете использовать подстановку команд в строке даты:
date -s "2014-12-25 $(date +%H:%M:%S)"
изменит дату, но сохраню время. См man dateформатирования детали для построения других комбинаций: отдельные компоненты %Y, %m, %d, %H, %M, и %S.
Там нет возможности сделать это. Вы можете использовать, date -s "2014-12-25 $(date +%H:%M:%S)"чтобы изменить дату и повторно использовать текущее время, хотя.
Майкл Гомер
пришел сюда и часы, а также минуты соответствовали текущему времени. - приятно
Alex2php
3
date: cannot set date: Invalid argument
Крис Стрычински,
@MichaelHomer @SHW можно изменить только дату с помощью команды вроде date -s 2018-01-01. Кто-то также поделился этим в ответе: superuser.com/questions/870068/…
baptx
42
Системное время
Вы можете использовать dateдля установки системной даты. Реализация GNU date(как встречается в большинстве не встроенных систем на основе Linux) принимает множество различных форматов для установки времени, вот несколько примеров:
установить только год:
date -s 'next year'
date -s 'last year'
установить только месяц:
date -s 'last month'
date -s 'next month'
установить только день:
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
установить все вместе:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
Аппаратное время
Теперь системное время установлено, но вы можете синхронизировать его с аппаратными часами:
Используйте --showдля печати аппаратного времени:
hwclock --show
Вы можете установить аппаратные часы на текущее системное время:
Бонусные баллы за иллюстрацию неочевидных способов установки даты на примерах и за указание на разницу между «системным временем» и «аппаратными часами». Очень полезный ответ!
Марк Эдингтон
3
Вы меняете дату с помощью dateкоманды. Тем не менее, команда ожидает полную дату в качестве аргумента:
# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014
Чтобы изменить часть даты, выведите текущую дату с частью даты, которую вы хотите изменить, в виде строки, а все остальные - в качестве переменных форматирования даты. Затем передайте это date -sкоманде, чтобы установить это:
# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014
Я пытаюсь изменить, но это не меняется: - $ sudo date --set = "2015-09-30 10: 05: 59.990" Ср 30 сентября 10:05:59 +0530 2015 $ date Чт 23 мая 15:10:37 +0530 2019
Винод
2
Для таких как я, использующих ESXI 5.1, вот что мне ответила система
~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'
Вместо этого мне пришлось использовать конкретную команду ESX:
esxcli system time set -y 2016 -M 03 -d 23 -H 10 -m 05 -s 00
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Легко
Самый простой способ - использовать, date -sпоскольку он позволяет использовать простые относительные даты.
$ date -s yesterday; date
date: cannot set date: Operation not permitted
Sat Jan 5 07:21:07 EST 2019
Sun Jan 6 07:21:07 EST 2019
Дата не изменилась, потому что она была выполнена с ограниченным пользователем $. Если вы действительно хотите изменить дату, используйте root ( #) или sudo:
$ sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
Таким образом, изменить любую часть относительной даты так же просто, как назвать ее:
$ date -s "5 years ago"
Mon Jan 6 08:26:26 EST 2014
$ date -s "+6 months"
Sat Jul 6 08:28:39 EDT 2019
$ date -s "+3 hours -13 minutes"
Sun Jan 6 11:16:59 AST 2019
Абсолютные даты немного сложнее, так как им нужно больше деталей:
$ date -s "2001-07-23 10:11:12"
Или вы можете использовать команду date дважды:
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
замените любое из %допустимым значением, и дата будет установлена (только как корень).
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
непосредственный
Вторая форма вызова даты используется для непосредственного изменения системной даты.
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Так :
date 11230812 # MMDDhhmm
Дата будет установлена 23 ноября в 08 ч. И 12 мин.
Я использовал команду даты и формат времени, перечисленные ниже, чтобы успешно установить дату из команды оболочки терминала, выполняемой на Android Things, которая использует Linux Kernal.
Поскольку это не работает ни с GNU, ни с BSD date, не могли бы вы добавить дополнительную информацию о том, к какой системе это относится и как это относится к данному конкретному вопросу.
date --set='-2 years'
установить часы на два года назад, оставив все остальные элементы идентичными. Вы можете изменить месяц и день месяца таким же образом. Я не проверял, что произойдет, если в результате этих вычислений дата и время фактически не будут существовать, например, во время перехода на летнее время, но поведение должно быть идентичным обычному поведению «установить и дату, и время для конкретных значений».sudo ntpd -gq
чтобы система автоматически обновлялась с помощью службы ntp.Ответы:
Используйте
date -s
:Запустите это как root или под
sudo
. Изменение только одного из года / месяца / дня является более сложной задачей и будет включать повторяющиеся биты текущей даты. Существуют также инструменты даты с графическим интерфейсом, встроенные в основные среды рабочего стола, доступ к которым обычно осуществляется через часы.Чтобы изменить только часть времени, вы можете использовать подстановку команд в строке даты:
изменит дату, но сохраню время. См
man date
форматирования детали для построения других комбинаций: отдельные компоненты%Y
,%m
,%d
,%H
,%M
, и%S
.источник
date -s "2014-12-25 $(date +%H:%M:%S)"
чтобы изменить дату и повторно использовать текущее время, хотя.date: cannot set date: Invalid argument
date -s 2018-01-01
. Кто-то также поделился этим в ответе: superuser.com/questions/870068/…Системное время
Вы можете использовать
date
для установки системной даты. Реализация GNUdate
(как встречается в большинстве не встроенных систем на основе Linux) принимает множество различных форматов для установки времени, вот несколько примеров:установить только год:
установить только месяц:
установить только день:
установить все вместе:
Аппаратное время
Теперь системное время установлено, но вы можете синхронизировать его с аппаратными часами:
Используйте
--show
для печати аппаратного времени:Вы можете установить аппаратные часы на текущее системное время:
Или системное время на аппаратные часы
источник
Вы меняете дату с помощью
date
команды. Тем не менее, команда ожидает полную дату в качестве аргумента:Чтобы изменить часть даты, выведите текущую дату с частью даты, которую вы хотите изменить, в виде строки, а все остальные - в качестве переменных форматирования даты. Затем передайте это
date -s
команде, чтобы установить это:меняет месяц на 12-й месяц - декабрь.
Форматы даты:
%Y
- год%m
- месяц%d
- день%H
- час%M
- минутаисточник
Для таких как я, использующих ESXI 5.1, вот что мне ответила система
Вместо этого мне пришлось использовать конкретную команду ESX:
источник
Команда для изменения системной даты есть
date
.Существует два способа вызова команды date (в Linux):
Легко
Самый простой способ - использовать,
date -s
поскольку он позволяет использовать простые относительные даты.Дата не изменилась, потому что она была выполнена с ограниченным пользователем
$
. Если вы действительно хотите изменить дату, используйте root (#
) или sudo:Таким образом, изменить любую часть относительной даты так же просто, как назвать ее:
Абсолютные даты немного сложнее, так как им нужно больше деталей:
Или вы можете использовать команду date дважды:
замените любое из
%
допустимым значением, и дата будет установлена (только как корень).непосредственный
Вторая форма вызова даты используется для непосредственного изменения системной даты.
Так :
Дата будет установлена 23 ноября в 08 ч. И 12 мин.
BSD имеет аналогичную команду, но в другом формате ([[[[[cc] гг] мм] дд] чч] мм [.ss]).
Попробуйте
date
как пользователь с ограниченными правами увидеть, что он будет делать (ничего не меняя):Или, если вы действительно хотите изменить дату как root:
Обратите внимание, что такие службы, как NTP или chrony, будут затронуты. И, если перезапустить, сбросит дату обратно на реальную.
Добавьте YY, чтобы установить год:
Или CCYY, чтобы установить год и век:
источник
Я использовал команду даты и формат времени, перечисленные ниже, чтобы успешно установить дату из команды оболочки терминала, выполняемой на Android Things, которая использует Linux Kernal.
дата 092615002017.00
MMDDHHMMYYYY.SS
ММ - Месяц - 09
ДД - День - 26
ЧЧ - час - 15
ММ - Мин - 00
ГГГГ - Год - 2017
.SS - второй - 00
источник
date
, не могли бы вы добавить дополнительную информацию о том, к какой системе это относится и как это относится к данному конкретному вопросу.