80 votes

Comment convertir DATE en TIMESTAMP UNIX dans le shell script sur MacOS

Sous Linux, vous pouvez convertir une date comme "2010-10-02" en un horodatage unix dans le script de l'interpréteur de commandes en procédant comme suit

date -d "2010-10-02" "+%s"

Puisque Mac OS n'a pas l'équivalent -d para date . Comment s'y prendre pour convertir une date en un horodatage unix dans un shell script.

138voto

JRiggles Points 341
date +%s

Cela fonctionne bien pour moi sur OS X Lion.

38voto

Lou Franco Points 48823

man date sur OSX a cet exemple

date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

Ce qui, je pense, fait ce que vous voulez.

Vous pouvez l'utiliser pour une date spécifique

date -j -f "%a %b %d %T %Z %Y" "Tue Sep 28 19:35:15 EDT 2010" "+%s"

Ou utilisez le format que vous voulez.

17voto

date -j -f "%Y-%m-%d" "2010-10-02" "+%s"

3voto

smarisetti Points 16

J'ai utilisé ce qui suit sur Mac OSX.

currDate=`date +%Y%m%d`
epochDate=$(date -j -f "%Y%m%d" "${currDate}" "+%s")

3voto

ScottInNH Points 108

Alternativement, vous pouvez installer GNU date comme suit :

  1. installer Homebrew : https://brew.sh/
  2. brew install coreutils
  3. ajouter à votre bash_profile : alias date="/usr/local/bin/gdate"
  4. date +%s 1547838127

Les commentaires disant que Mac doit être "différent" révèlent simplement que le commentateur ignore l'histoire d'UNIX. macOS est basé sur BSD UNIX, qui est bien plus ancien que Linux. Linux était essentiellement une copie d'autres systèmes UNIX, et Linux a décidé d'être "différent" en adoptant les outils GNU au lieu des outils BSD. Les outils GNU sont plus conviviaux, mais on ne les trouve généralement pas sur les systèmes *BSD (c'est ainsi).

Vraiment, si vous passez la plupart de votre temps sous Linux, mais que vous avez un bureau Mac, vous probablement veulent faire fonctionner le Mac comme Linux. Il est inutile d'essayer de se souvenir de deux jeux d'options différents, ou d'écrire des scripts pour la version BSD de Bash sur le Mac, à moins que vous n'écriviez un utilitaire que vous voulez exécuter à la fois sur les shells BSD et GNU/Linux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X