GNU/Linux >> Tutoriels Linux >  >> Linux

Convertir les formats de date en bash

Sur OSX, j'utilise -f pour spécifier le format d'entrée, -j pour ne pas tenter de définir de date et un spécificateur de format de sortie. Par exemple :

$ date -j -f "%m/%d/%y %H:%M:%S %p" "8/22/15 8:15:00 am" +"%m%d%y"
082215

Votre exemple :

$ date -j -f "%d %b %Y" "27 JUN 2011" +%Y%m%d
20110627

#since this was yesterday
date -dyesterday +%Y%m%d

#more precise, and more recommended
date -d'27 JUN 2011' +%Y%m%d

#assuming this is similar to yesterdays `date` question from you 
#http://stackoverflow.com/q/6497525/638649
date -d'last-monday' +%Y%m%d

#going on @seth's comment you could do this
DATE="27 jun 2011"; date -d"$DATE" +%Y%m%d

#or a method to read it from stdin
read -p "  Get date >> " DATE; printf "  AS YYYYMMDD format >> %s"  `date
-d"$DATE" +%Y%m%d`    

#which then outputs the following:
#Get date >> 27 june 2011   
#AS YYYYMMDD format >> 20110627

#if you really want to use awk
echo "27 june 2011" | awk '{print "date -d\""$1FS$2FS$3"\" +%Y%m%d"}' | bash

#note | bash just redirects awk's output to the shell to be executed
#FS is field separator, in this case you can use $0 to print the line
#But this is useful if you have more than one date on a line

En savoir plus sur les dates

notez que cela ne fonctionne qu'à la date GNU

J'ai lu ça :

Version Solaris de date, qui ne peut pas prendre en charge -d peut être résolu en remplaçant la date de la version de sunfreeware.com


Linux
  1. Bash Convertir \xc3\x89 en É ?

  2. Comment convertir DATE en UNIX TIMESTAMP dans un script shell sur MacOS

  3. vérifier si l'argument est une date valide dans le shell bash

  4. Obtenez la date d'hier dans bash sous Linux, DST-safe

  5. soustraire des jours d'une date en bash

Bash Shebang

Comment utiliser la commande de date dans les scripts bash sous Linux

Convertir une chaîne de texte en bash en tableau

Bash - Commande de date et espace

Comparaison de dates dans Bash

Comment convertir le jour de l'année et l'année en une date AAAAMMJJ ?