Você pode colocar o cálculo entre parênteses ...
root@beaglebone:~/bbbrtc# date -d "@1524884843+(1 month)"
Sat Apr 28 03:07:23 UTC 2018
Eu tenho um tempo representado como segundos desde 1970-01-01 00:00:00 UTC, como 1524884843
.
Eu quero ter o tempo, digamos, de um mês a partir do tempo especificado acima.
Normalmente, se eu quiser ter o tempo daqui a 1 mês, posso usar ...
root@beaglebone:~/bbbrtc# date
Sat Apr 28 03:12:54 UTC 2018
root@beaglebone:~/bbbrtc# date -d "now+1 month"
Mon May 28 03:12:57 UTC 2018
Eu também posso especificar uma hora de segundos de época no argumento -d
prefixando-a com um @
como em ....
root@beaglebone:~/bbbrtc# date -d "@1524884843"
Sat Apr 28 03:07:23 UTC 2018
No entanto, quando tento combinar um tempo de época pré-fixado @
com um cálculo, recebo um erro ...
root@beaglebone:~/bbbrtc# date -d "@1524884843+1 month"
date: invalid date '@1524884843+1 month'
Qual é a sintaxe correta para combinar um tempo de época com um cálculo relativo?
Você pode colocar o cálculo entre parênteses ...
root@beaglebone:~/bbbrtc# date -d "@1524884843+(1 month)"
Sat Apr 28 03:07:23 UTC 2018
A única maneira é usar uma conversão em duas etapas:
$ date -d "$(date -d "@1524884843") + 1 month"
Mon May 28 03:07:23 UTC 2018
Com date
do ast-open (possivelmente a data de embutimento do ksh93 dependendo de como ele foi construído e do ambiente):
$ date -d '#1234567890'
Fri Feb 13 23:31:30 GMT 2009
$ date -d "#1234567890 30 days"
Sun Mar 15 23:31:30 GMT 2009
(ast date
não suporta deslocamentos expressos em meses (os meses não têm um tamanho fixo)).
Com o GNU date
, você pode usar o método antigo (antes de @epoch
support ser adicionado) onde você expressa o tempo de época como um deslocamento em segundos relativo a 1970-01-01 00:00:00 UTC:
$ date -d '1970-01-01T00:00:00Z + 1234567890 seconds'
Fri 13 Feb 23:31:30 GMT 2009
$ date -d '1970-01-01T00:00:00Z + 1234567890 seconds + 1 month'
Mon 16 Mar 23:31:30 GMT 2009
No entanto, note que 1 mês é 31 dias , presumivelmente porque date
considera que o 1 mês de compensação é relativo a Jan 1970.
Se o seu date
é o GNU e você gostaria do comportamento exibido para datas relativas ao mês em que um deslocamento de um mês fornece o mesmo dia do mês (supondo que haja um dia no mês seguinte) como a data de início (embora não necessariamente a mesma hora do dia, se houve alguma mudança de horário de verão no intervalo), então você provavelmente desejaria usar a abordagem de duas etapas de @ isaac .
Tags command-line date