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:ss
a 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 yyyMMddHHmmss
formato
[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