web-dev-qa-db-ja.com

MacOSのシェルスクリプトでDATEをUNIX TIMESTAMPに変換する方法

Linuxでは、「2010-10-02」のような日付をシェルスクリプトのUNIXタイムスタンプに変換できます。

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

Mac OSにはdateに相当する-dがないためです。シェルスクリプトで日付をUNIXタイムスタンプに変換する方法を教えてください。

71
David Young

OSXのman dateにはこの例があります

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

私はあなたが望むものを行うと思います。

特定の日付にこれを使用できます

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

または、必要な形式を使用します。

30
Lou Franco
date +%s

これはOS X Lionでうまく機能します。

130
JRiggles

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

15
user405725

Mac OSXでは以下を使用しました。

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

または、次のようにGNU dateをインストールできます。

  1. homebrewのインストール: https://brew.sh/
  2. brew install coreutils
  3. bash_profileに追加します:alias date="/usr/local/bin/gdate"
  4. date +%s 1547838127

Macは「異なっている」必要があるというコメントは、コメント者がUNIXの歴史について無知であることを明らかにするだけです。 macOSは、Linuxよりもずっと古いBSD UNIXに基づいています。 Linuxは基本的に他のUNIXシステムのコピーであり、LinuxはBSDツールの代わりにGNUツールを採用することで「異なる」ことを決定しました。 GNUツールはより使いやすいですが、通常は* BSDシステムにはありません(そのまま)。

実際、ほとんどの時間をLinuxで過ごしているが、Macデスクトップを持っている場合、おそらくMacをLinuxのように動作させたいと思うでしょう。 BSDシェルとGNU/Linuxシェルの両方で実行するユーティリティを作成している場合を除き、2つの異なるオプションセットを覚えようとしたり、MacのBSDバージョンのBashのスクリプトを記述したりする意味はありません。

1