Étant donné une date et une heure dans un format qui n'est pas reconnu par date
, comment puis-je date
reconnaître la date et l'heure?
Par exemple:
$ date -d "09SEP2012:23:58:46"
date: invalid date `09SEP2012:23:58:46'
$ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss"
Sun Sep 9 23:58:46 MDT 2012
--magic-option
Existe- t- il? Sinon, existe-t-il un moyen plus élégant de résoudre ce problème plutôt que d'utiliser sed
pour transformer l'entrée en une chaîne de date bien formée?
Réponses:
Ni POSIX ni GNU date
--magic-option
. FreeBSD l'appelle-f
(avec une syntaxe similaire auxdate
spécificateurs de format de sortie de, pas celle que vous proposez).Votre date est très proche d'être reconnue par GNU date: il suffit de remplacer les deux points qui séparent la date de l'heure par un espace.
la source
01/02/03
.J'ai écrit un tas d'outils ( dateutils ) qui traitent les dates et les heures d'une manière plus conviviale pour les scripts. Votre option magique est
--input-format|-i
par exemple:Bien qu'il
dconv
ne prenne pas directement en chargedate
le format de sortie de (il ne confèreTZ
rien ou quoi que ce soit dans l'environnement), il y a un outilstrptime
dans dateutils qui prend en charge le%Z
spécificateur de format.la source