Directorio de artículos
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:ss
la 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 yyyMMddHHmmss
formato
[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