Aprenda un poco de shell todos los días: el uso de la función de fecha de hora en linux

1. Formato de la función de fecha en Linux

Primero, el formato de la función de fecha es el siguiente:

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

El formato se explica a continuación:

símbolo Explicación
%% % De un texto
%una La abreviatura del nombre de la semana de la configuración regional actual (por ejemplo: día, que representa el domingo)
%UNA El nombre completo de la semana de la configuración regional actual (por ejemplo, domingo)
%si La abreviatura del nombre del mes de la configuración regional actual (por ejemplo, uno, que representa enero)
%SI El nombre completo del mes de la configuración regional actual (por ejemplo, enero)
%C La fecha y hora de la configuración regional actual (por ejemplo: 23:05:25, jueves 3 de marzo de 2005)
%C Siglo; como% Y, generalmente omitiendo los dos últimos dígitos del año actual (por ejemplo: 20)
%re Mes a mes (por ejemplo, 01)
%RE Fecha del mes; igual a% m /% d /% y
%mi Mes a mes, agregue espacio, igual a% _d
%F Formato de fecha completa, equivalente a% Y-% m-% d
%gramo Los dos últimos dígitos del año en formato ISO-8601 (ver% G)
%GRAMO Año en formato ISO-8601 (ver% V), generalmente solo se usa en combinación con% V
% h Igual a% b
% H Hora (00-23)
%YO Hora (00-12)
% j Fecha anual (001-366)
% k hora, espacio relleno (0… 23); igual que% _H
% l hora, espacio relleno (1… 12); igual que% _I
%metro mes (01… 12)
%METRO minuto (00… 59)
%norte Envolver
%NORTE Nanosegundo (000000000-999999999)
%pags "AM" o "PM" en la configuración regional actual, la salida está vacía cuando se desconoce
%PAGS Similar a% p, pero con letras minúsculas
% r La hora del reloj de 12 horas en la configuración regional actual (por ejemplo: 11:11:04 p.m.)
% R Horas y minutos de 24 horas, equivalente a% H:% M
% s La cantidad de segundos que han pasado desde UTC 1970-01-01 00:00:00
% S Segundos (00-60)
% t Pestaña de salida
% T Tiempo, igual a% H:% M:% S
% u Semana, 1 para el lunes
% U Las primeras semanas del año, con el domingo como primer día de la semana (00-53)
% V La semana del año según la especificación de formato ISO-8601, con el lunes como primer día de la semana (01-53)
% w El día de la semana (0-6), 0 significa lunes
% W Las primeras semanas del año, con el lunes como primer día de la semana (00-53)
%X La descripción de la fecha en la configuración regional actual (por ejemplo: 31/12/99)
%X Descripción de la hora en la configuración regional actual (por ejemplo: 23:13:48)
%y Los dos últimos dígitos del año (00-99)
%Y años
%CON Abreviatura alfabética de la zona horaria (por ejemplo, EDT)

2. El uso específico de la función de fecha

2.1, obtenga la fecha en el formato correspondiente

El formato de fecha de salida es yyyy-MM-dd HH:mm:ssla hora, tomando como ejemplo la fecha y hora actuales:

método uno:

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

Camino dos:

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

Camino tres:

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

Dé un ejemplo de otros formatos de datos, por ejemplo, el formato de salida es yyyMMddHHmmssformato

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

2.2, obtenga la fecha del intervalo

2.2.1, obtenga la fecha de hoy

método uno:

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

Camino dos:

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

Camino tres:

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

2.2.2, obtenga la fecha de ayer

método uno:

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

Camino dos:

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

Camino tres:

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

Camino cuatro:

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

Camino cinco:

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

Según la expresión anterior, inferimos que la fecha de hace 17 días es:

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

De igual forma se puede inferir que la última hora es:

[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

De la misma manera, puede obtener el último año, último mes, último día, última hora, último minuto y último segundo. No más expansión.

2.2.3, obtenga la fecha de mañana

Con base en lo anterior, podemos inferir fácilmente cómo se calculará la fecha mañana:
Método 1:

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

Camino dos:

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

Camino tres:

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

De igual forma, se puede inferir que después de 17 días:

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

2.3, obtenga la marca de tiempo actual

Tenga en cuenta la cantidad de segundos que han pasado desde la hora UTC 1970-01-01 00:00:00. Si está utilizando una marca de tiempo más precisa, no puede usar esta

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

El siguiente es el número de nanosegundos para obtener la hora actual, con una precisión de cien millonésimas de segundo, este es el valor después del segundo

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

Obtener la hora actual en milisegundos

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

Sin embargo, hay un defecto en este que reportará un error:

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

2.4. Convertir la cadena de tiempo especificada en un formato de fecha

Convertir cadena en marca de tiempo

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

Convertir la marca de tiempo en tiempo

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

Supongo que te gusta

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