Comment faire pour convertir des chaînes de caractères comme “19-FÉVR-12” à l'époque de la date à UNIX Dans UNIX comment convertir à l'époque millisecondes date de chaînes de caractères comme: 19-FEB-12 16-FEB-12 05-AUG-09 J'ai besoin de le comparer à ces dates, à l'heure actuelle sur le serveur. InformationsquelleAutor hellish | 2013-02-11 bashdateunixunix-timestamp 44 Pour convertir une date en secondes depuis l'epoch: date --date="19-FEB-12" +%s Époque actuelle: date +%s Donc, puisque vos dates sont dans le passé: NOW=`date +%s` THEN=`date --date="19-FEB-12" +%s` let DIFF=$NOW-$THEN echo "The difference is: $DIFF" À l'aide de BSD date de commande, vous devez $ date -j -f "%d-%B-%y" 19-FEB-12 +%s Différences de GNU date: -j empêche date d'essayer de régler l'horloge Le format d'entrée doit être explicitement défini avec -f La date saisie est régulièrement un argument, pas une option (viz. -d) Lorsqu'aucun délai n'est spécifié avec la date, utilisez l'heure actuelle, au lieu de minuit. InformationsquelleAutor Anew 1 Voici un moyen à l'aide de GNU awk. Pour exécuter: awk -f script.awk file Contenu de script.awk: BEGIN { n = systime() FS="-" } { t = mktime(sprintf("%d %d %d %d %d %d", "20" $3, convert($2), $1, 0, 0, 0)) printf "%.1f days ago\n", (n - t) / 60 / 60 / 24 } function convert(m) { return(((index("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC", m) - 1) / 3) + 1) } Résultats: 358.6 days ago 361.6 days ago 1286.6 days ago InformationsquelleAutor Steve Vous devez vous connecter pour publier un commentaire.
Pour convertir une date en secondes depuis l'epoch:
Époque actuelle:
Donc, puisque vos dates sont dans le passé:
À l'aide de BSD
date
de commande, vous devezDifférences de GNU
date
:-j
empêchedate
d'essayer de régler l'horloge-f
-d
)de minuit.
Voici un moyen à l'aide de
GNU awk
. Pour exécuter:Contenu de
script.awk
:Résultats: