簡體   English   中英

如何在 MacOS 上的 shell 腳本中將 DATE 轉換為 UNIX TIMESTAMP

[英]How to convert DATE to UNIX TIMESTAMP in shell script on MacOS

在 Linux 上,您可以通過以下方式將“2010-10-02”之類的日期轉換為 shell 腳本中的 unix 時間戳

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

由於 Mac OS 沒有等效的-d日期 您如何在 shell 腳本中將日期轉換為 unix 時間戳。

date +%s

這在 OS X Lion 上對我來說很好用。

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"

或者使用您想要的任何格式。

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

我在 Mac OSX 上使用了以下內容。

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

或者,您可以像這樣安裝 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 基於 BSD UNIX,它比 Linux 古老得多。 Linux 本質上是其他 UNIX 系統的副本,Linux 決定通過采用 GNU 工具而不是 BSD 工具來“與眾不同”。 GNU 工具對用戶更友好,但它們通常不會在任何 *BSD 系統上找到(只是它的方式)。

真的,如果您將大部分時間都花在 Linux 上,但擁有 Mac 桌面,那么您可能想讓 Mac 像 Linux 一樣工作。 嘗試記住兩組不同的選項或為 mac 的 BSD 版本的 Bash 編寫腳本是沒有意義的,除非您正在編寫要在 BSD 和 GNU/Linux shell 上運行的實用程序。

date -j -f "%Y-%m-%d %H:%M:%S" "2020-04-07 00:00:00" "+%s"

當沒有%H:%M:%S00:00:00時,它將打印動態00:00:00

我編寫了一組腳本,為 BSD 和 GNU 版本的date提供了統一的接口。

Follow 命令將輸出日期2010-10-02的紀元秒數,它適用於 BSD 和 GNU 版本的date

$ xsh /date/convert "2010-10-02" "+%s"
1286020263

它相當於帶有 GNU 版本date的命令:

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

以及帶有date BSD 版本的命令:

date -j -f "%F" 2010-10-02 "+%s"

可以在以下位置找到腳本:

它是名為xsh-lib/core的庫的一部分。 要使用它們,您需要 repos xshxsh-lib/core ,我在下面列出了它們:

要將 UTC 中的日期轉換為 Unix 時間戳:

date -ju -f "%F %T" "2021-03-08 14:56:21" "+%s"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM