Você pode usar, por exemplo, date --set='-2 years'para atrasar o relógio em dois anos, deixando todos os outros elementos idênticos. Você pode alterar mês e dia do mês da mesma maneira. Não verifiquei o que acontece se esse cálculo resultar em uma data e hora realmente inexistentes, por exemplo, durante uma alternância do horário de verão, mas o comportamento deve ser idêntico ao comportamento usual "definir data e hora para valores concretos".
Christian Severin
Supondo que você esteja tentando definir a data para a hora atual, você pode fazer sudo ntpd -gqcom que o sistema seja atualizado automaticamente usando o serviço ntp.
Execute isso como root ou under sudo. Alterar apenas um do ano / mês / dia é mais um desafio e envolverá a repetição de bits da data atual. Também existem ferramentas de data da GUI incorporadas aos principais ambientes de desktop, geralmente acessados através do relógio.
Para alterar apenas parte do tempo, você pode usar a substituição de comando na cadeia de datas:
date -s "2014-12-25 $(date +%H:%M:%S)"
mudará a data, mas manterá a hora. Veja man datepara formatar detalhes para a construção de outras combinações: os componentes individuais são %Y, %m, %d, %H, %M, e %S.
Não há opção para fazer isso. Você pode usar date -s "2014-12-25 $(date +%H:%M:%S)"para alterar a data e reutilizar a hora atual.
Michael Homer
chegou aqui e as horas e os minutos correspondiam à hora atual. - bom
Alex2php
2
date: cannot set date: Invalid argument
Chris Stryczynski
@MichaelHomer @SHW é possível alterar apenas a data com um comando como date -s 2018-01-01. Alguém compartilhou isso em uma resposta também: superuser.com/questions/870068/…
baptx 4/18/18
42
Hora do sistema
Você pode usar datepara definir a data do sistema. A implementação GNU de date(como encontrada na maioria dos sistemas baseados em Linux não incorporados) aceita muitos formatos diferentes para definir o tempo, aqui estão alguns exemplos:
definir apenas o ano:
date -s 'next year'
date -s 'last year'
defina apenas o mês:
date -s 'last month'
date -s 'next month'
defina apenas o dia:
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
conjunto todos juntos:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
Tempo de hardware
Agora, a hora do sistema está definida, mas você pode sincronizá-lo com o relógio do hardware:
Use --showpara imprimir o tempo do hardware:
hwclock --show
Você pode definir o relógio do hardware para a hora atual do sistema:
Pontos de bônus por ilustrar as maneiras não óbvias em que você pode definir a data com exemplos e por apontar a diferença entre a "hora do sistema" e o "relógio do hardware". Resposta muito útil!
precisa
3
Você altera a data com o datecomando No entanto, o comando espera uma data completa como o argumento:
# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014
Para alterar parte da data, imprima a data atual com a parte da data que você deseja alterar como uma sequência e todas as outras como variáveis de formatação de data. Em seguida, passe isso para o date -scomando para configurá-lo:
# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014
Eu tento mudar, mas não está mudando: - $ sudo date --set = "2015-09-30 10: 05: 59.990" Qua 30 de setembro 10:05:59 +0530 2015 $ date qui 23 de maio 15:10:37 +0530 2019
Vinod
2
Para pessoas como eu executando o ESXI 5.1, eis o que o sistema me respondeu
~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'
Eu tive que usar um comando ESX específico:
esxcli system time set -y 2016 -M 03 -d 23 -H 10 -m 05 -s 00
Obrigado pelo -1, mas você se importaria de explicar o porquê ? Se você obteve uma resposta melhor / mais completa / mais exata, fique à vontade para comentar.
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Fácil
A maneira mais fácil é usar date -s, pois permite o uso de datas relativas simples
$ 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
A data não foi alterada porque foi executada com um usuário limitado $. Se você realmente deseja que a data seja alterada, use root ( #) ou sudo:
$ sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
Portanto, alterar qualquer parte de uma data relativa é tão fácil quanto nomeá-la:
$ 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
Datas absolutas são um pouco mais complexas, pois precisam de mais detalhes:
$ date -s "2001-07-23 10:11:12"
Ou, você pode usar o comando date duas vezes:
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
substitua qualquer %um por um valor válido e a data será definida (apenas como raiz).
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
direto
O segundo formulário de chamada de data é usado para alterar diretamente a data do sistema.
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Assim :
date 11230812 # MMDDhhmm
Definirá a data para 23 de novembro às 08h e 12min.
Usei o comando date e o formato da hora listados abaixo para definir com êxito a data no comando shell do terminal executado no Android Things que usa o Linux Kernal.
Como isso não funciona com o GNU ou o BSD date, você poderia adicionar mais informações sobre para qual sistema isso é relevante e como é relevante para essa pergunta em particular.
date --set='-2 years'
para atrasar o relógio em dois anos, deixando todos os outros elementos idênticos. Você pode alterar mês e dia do mês da mesma maneira. Não verifiquei o que acontece se esse cálculo resultar em uma data e hora realmente inexistentes, por exemplo, durante uma alternância do horário de verão, mas o comportamento deve ser idêntico ao comportamento usual "definir data e hora para valores concretos".sudo ntpd -gq
com que o sistema seja atualizado automaticamente usando o serviço ntp.Respostas:
Use
date -s
:Execute isso como root ou under
sudo
. Alterar apenas um do ano / mês / dia é mais um desafio e envolverá a repetição de bits da data atual. Também existem ferramentas de data da GUI incorporadas aos principais ambientes de desktop, geralmente acessados através do relógio.Para alterar apenas parte do tempo, você pode usar a substituição de comando na cadeia de datas:
mudará a data, mas manterá a hora. Veja
man date
para formatar detalhes para a construção de outras combinações: os componentes individuais são%Y
,%m
,%d
,%H
,%M
, e%S
.fonte
date -s "2014-12-25 $(date +%H:%M:%S)"
para alterar a data e reutilizar a hora atual.date: cannot set date: Invalid argument
date -s 2018-01-01
. Alguém compartilhou isso em uma resposta também: superuser.com/questions/870068/…Hora do sistema
Você pode usar
date
para definir a data do sistema. A implementação GNU dedate
(como encontrada na maioria dos sistemas baseados em Linux não incorporados) aceita muitos formatos diferentes para definir o tempo, aqui estão alguns exemplos:definir apenas o ano:
defina apenas o mês:
defina apenas o dia:
conjunto todos juntos:
Tempo de hardware
Agora, a hora do sistema está definida, mas você pode sincronizá-lo com o relógio do hardware:
Use
--show
para imprimir o tempo do hardware:Você pode definir o relógio do hardware para a hora atual do sistema:
Ou a hora do sistema para o relógio do hardware
fonte
Você altera a data com o
date
comando No entanto, o comando espera uma data completa como o argumento:Para alterar parte da data, imprima a data atual com a parte da data que você deseja alterar como uma sequência e todas as outras como variáveis de formatação de data. Em seguida, passe isso para o
date -s
comando para configurá-lo:altera o mês para o 12º mês - dezembro.
Os formatos de data são:
%Y
- Ano%m
- Mês%d
- Dia%H
- Hora%M
- Minutofonte
Para pessoas como eu executando o ESXI 5.1, eis o que o sistema me respondeu
Eu tive que usar um comando ESX específico:
fonte
O comando para alterar a data do sistema é
date
.Existem duas maneiras de chamar o comando date (no Linux):
Fácil
A maneira mais fácil é usar
date -s
, pois permite o uso de datas relativas simplesA data não foi alterada porque foi executada com um usuário limitado
$
. Se você realmente deseja que a data seja alterada, use root (#
) ou sudo:Portanto, alterar qualquer parte de uma data relativa é tão fácil quanto nomeá-la:
Datas absolutas são um pouco mais complexas, pois precisam de mais detalhes:
Ou, você pode usar o comando date duas vezes:
substitua qualquer
%
um por um valor válido e a data será definida (apenas como raiz).direto
O segundo formulário de chamada de data é usado para alterar diretamente a data do sistema.
Assim :
Definirá a data para 23 de novembro às 08h e 12min.
O BSD tem um comando semelhante, mas com um formato diferente ([[[[cc] aa] mm] dd] HH] MM [.ss]).
Tente
date
como um usuário limitado para ver o que faria (sem alterar nada):Ou, se você realmente deseja alterar a data, como root:
Observe que serviços como NTP ou chrony serão afetados. E, se reiniciado, redefinirá a data para a data real.
Adicione um AA para definir o ano:
Ou um CCYY para definir ano e século:
fonte
Usei o comando date e o formato da hora listados abaixo para definir com êxito a data no comando shell do terminal executado no Android Things que usa o Linux Kernal.
data 092615002017.00
MMDDHHMMYYYY.SS
MM - Mês - 09
DD - Dia - 26
HH - Hora - 15
MM - Mín. - 00
AAAA - Ano - 2017
.SS - segundo - 00
fonte
date
, você poderia adicionar mais informações sobre para qual sistema isso é relevante e como é relevante para essa pergunta em particular.