Aprenda um pouco de shell todos os dias: o uso da função data de hora no Linux

1. Formato da função de data no Linux

Primeiro, o formato da função de data é o seguinte:

用法:date [选项]... [+格式]
 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

O formato é explicado da seguinte forma:

símbolo Explicação
%% % De um texto
%uma A abreviatura do nome da semana do local atual (por exemplo: dia, representando domingo)
%UMA O nome completo da semana do local atual (por exemplo, domingo)
% b A abreviatura do nome do mês da localidade atual (por exemplo, um, representando janeiro)
% B O nome completo do mês da localidade atual (por exemplo, janeiro)
% c A data e hora do local atual (por exemplo: 23:05:25, quinta-feira, 3 de março de 2005)
% C Século; como% Y, geralmente omitindo os dois últimos dígitos do ano atual (por exemplo: 20)
% d Mês a mês (por exemplo, 01)
% D Data no mês; igual a% m /% d /% y
% e Mês a mês, adicione espaço, igual a% _d
% F Formato de data completa, equivalente a% Y-% m-% d
% g Os dois últimos dígitos do ano no formato ISO-8601 (veja% G)
% G Formato ISO-8601 ano (consulte% V), geralmente usado apenas em combinação com% V
% h Igual a% b
% H Hora (00-23)
%EU Hora (00-12)
% j Data anual (001-366)
% k hora, espaço preenchido (0… 23); igual a% _H
%eu hora, espaço preenchido (1… 12); igual a% _I
% m mês (01 ... 12)
% M minuto (00 ... 59)
% n Embrulho
% N Nanossegundo (000000000-999999999)
% p "AM" ou "PM" no local atual, a saída está vazia quando desconhecida
% P Semelhante a% p, mas produz letras minúsculas
% r O relógio de 12 horas no local atual (por exemplo: 23:11:04)
% R Horas e minutos de 24 horas, equivalente a% H:% M
% s O número de segundos que se passaram desde UTC 1970-01-01 00:00:00
% S Segundos (00-60)
% t Tab output Tab
% T Tempo, igual a% H:% M:% S
% você Semana, 1 para segunda-feira
% VOCÊ As primeiras semanas do ano, com domingo como o primeiro dia da semana (00-53)
% V A semana do ano de acordo com a especificação do formato ISO-8601, com segunda-feira como o primeiro dia da semana (01-53)
%W O dia da semana (0-6), 0 significa segunda-feira
%W As primeiras semanas do ano, com segunda-feira como o primeiro dia da semana (00-53)
% x A descrição da data no local atual (por exemplo: 31/12/99)
% X Descrição de tempo na localidade atual (por exemplo: 23:13:48)
%e Os dois últimos dígitos do ano (00-99)
%E anos
%COM Abreviatura alfabética do fuso horário (por exemplo, EDT)

2. O uso específico da função de data

2.1, obtenha a data no formato correspondente

O formato da data de saída é yyyy-MM-dd HH:mm:ssa hora, tomando a data e hora atuais como exemplo:

método um:

[root@hadoop-master ~]# date -d today +"%Y-%m-%d %T"
2020-09-16 19:45:39

Caminho dois:

[root@hadoop-master ~]# date +"%Y-%m-%d %T"
2020-09-16 19:48:39

Caminho três:

[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S"
2020-09-16 19:51:42

Dê um exemplo de outros formatos de dados, por exemplo, o formato de saída é o yyyMMddHHmmssformato

[root@hadoop-master ~]# date +"%Y%m%d%H%M%S"
20200916195408

2.2, obtenha a data do intervalo

2.2.1, obtenha a data de hoje

método um:

[root@hadoop-master ~]# date +%Y%m%d
20200916

Caminho dois:

[root@hadoop-master ~]# date +%F
2020-09-16

Caminho três:

[root@hadoop-master ~]# echo $(date +%Y%m%d)
20200916

2.2.2, obter a data de ontem

método um:

[root@hadoop-master ~]# date -d yesterday +%Y%m%d
20200915

Caminho dois:

[root@hadoop-master ~]# date -d -1day +%Y%m%d
20200915

Caminho três:

[root@hadoop-master ~]# date -d "-1 day" +%Y%m%d
20200915

Via quatro:

[root@hadoop-master ~]# date +%Y%m%d --date="-1 day"
20200915

Caminho Cinco:

[root@hadoop-master ~]# date +%Y%m%d --date="1 day ago"
20200915

Com base na expressão acima, inferimos que a data 17 dias atrás é:

[root@hadoop-master ~]# date +%Y%m%d --date=-17day
20200830

Da mesma forma, pode-se inferir que a última hora é:

[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S"  --date=-1hour
2020-09-16 19:15:00

Último minuto:

[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S"  --date=-1minute
2020-09-16 20:14:34

Da mesma forma, você pode obter o último ano, último mês, último dia, última hora, último minuto e último segundo. Sem mais expansão.

2.2.3, obtenha a data de amanhã

Com base no que precede, podemos facilmente inferir como a data será calculada amanhã:
Método 1:

[root@hadoop-master ~]# date +%Y%m%d --date=tomorrow
20200917

Caminho dois:

[root@hadoop-master ~]# date +%Y%m%d --date=+1day
20200917

Caminho três:

[root@hadoop-master ~]# date +%Y%m%d --date="+1 day"
20200917

Da mesma forma, pode-se inferir que após 17 dias:

[root@hadoop-master ~]# date +%Y%m%d --date="+17 day"
20201003

2.3, obtenha o carimbo de data / hora atual

Observe o número de segundos que se passaram desde a hora UTC 1970-01-01 00:00:00. Se estiver usando um carimbo de data / hora mais preciso, você não pode usar este

[root@hadoop-master ~]# date +%s
1600258838

A seguir está o número de nanossegundos para obter a hora atual, com precisão de cem milionésimo de segundo, este é o valor após o segundo

[root@hadoop-master ~]# date +%N
713781544

Obtenha a hora atual em milissegundos

[root@hadoop-master ~]# echo $((`date '+%s'`*1000+`date '+%N'`/1000000))
1600259292777

No entanto, há um defeito neste que relatará um erro:

[root@hadoop-master ~]# echo $((`date '+%s'`*1000+`date '+%N'`/1000000))
-bash: 1600259263*1000+097437620: 数值太大不可为算数进制的基 (错误符号是 "097437620"

2.4. Converta a sequência de tempo especificada em um formato de data

Converter string em carimbo de data / hora

[root@hadoop-master ~]# date +%s --date="2020-09-16"
1600185600

Converter carimbo de data / hora em hora

[root@hadoop-master ~]#   date -d @1600185600  "+%Y-%m-%d"
2020-09-16

Acho que você gosta

Origin blog.csdn.net/u011047968/article/details/108628765
Recomendado
Clasificación