J'ai besoin d'une commande shell ou d'un script qui convertit un horodatage Unix en une date. L'entrée peut provenir du premier paramètre ou de stdin, permettant les modèles d'utilisation suivants:
ts2date 1267619929
et
echo 1267619929 | ts2date
Les deux commandes doivent afficher "Wed Mar 3 13:38:49 2010".
bash
date
unix-timestamp
chiborg
la source
la source
date -d @$(date -u +%s)
@
? Je ne vois pas du tout cela dans la page de manuel GNU.brew install coreutils; gdate -d @1267619929
info 'Date input formats'
vous amène directement audate
nœud d'informations de mise en forme, avec la citation pertinente de Robert Grudin, puis un menu de spécificateurs de format.fonctionne pour moi sur Mac OS X.
la source
Cette version est similaire à la réponse de chiborg , mais elle élimine le besoin des externes
tty
et descat
. Il utilisedate
, mais pourrait tout aussi facilement utilisergawk
. Vous pouvez changer le shebang et remplacer les crochets doubles par des crochets simples et cela fonctionnera égalementsh
.la source
gawk
est (très grossièrement) 15% plus rapide quedate
dans unefor
boucle temporisée composée uniquement degawk 'BEGIN { print strftime("%c", 1256571985); }'
oudate -d '@1256571985' +%c
avec une sortie redirigée vers/dev/null
.Vous pouvez utiliser la date GNU, par exemple,
ou
la source
Vous pouvez utiliser ce simple script awk:
Exemple d'utilisation:
la source
date -s @
ne fonctionne pas, et fonctionneawk
toujours! Un exemple sans stdin serait également utile.Depuis Bash 4.2, vous pouvez utiliser
printf
le%(datefmt)T
format de:C'est bien, car c'est un shell intégré. Le format de datefmt est une chaîne acceptée par
strftime(3)
(voirman 3 strftime
). Voici%c
:Maintenant, si vous voulez un script qui accepte un argument et, si aucun n'est fourni, lit stdin, vous pouvez procéder comme suit:
la source
J'utilise ceci lors de la conversion de fichiers journaux ou de leur surveillance:
la source
awk '{ printf strftime("%c: ", $1); $1 = ""; print $0; }'
Dans OSX ou BSD, il y a un
-r
drapeau équivalent qui prend apparemment un horodatage Unix. Voici un exemple qui exécute la date quatre fois: une fois pour la première date, pour montrer de quoi il s'agit; un pour la conversion en horodatage unix avec%s
, et enfin, un qui, avec-r
, convertit ce qui%s
renvoie en chaîne.Au moins, semble fonctionner sur ma machine.
la source
Vous pouvez obtenir une date formatée à partir d'un horodatage comme celui-ci
la source
J'ai écrit un script qui le fait moi-même:
la source
Dans cette réponse, je copie la réponse de Dennis Williamson et la modifie légèrement pour permettre une augmentation considérable de la vitesse lors du transfert d'une colonne de nombreux horodatages vers le script. Par exemple, le raccordement de 1000 horodatages au script d'origine avec xargs -n1 sur ma machine a pris 6,929s contre 0,027s avec cette version modifiée:
la source
un exemple:
la source
J'utilise ce one-liner multi-plateforme:
Il devrait fonctionner à la fois dans macOS et dans les versions ultérieures des distributions Linux courantes.
la source
Bien qu'il ne soit pas purement bash, le script suivant convertira les horodatages de longueur 13 dans une chaîne en leur date équivalente dans votre fuseau horaire local en utilisant perl
timestamp_to_date.sh
contribution
production
la source
En PHP
la source