Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在MacOS上的shell脚本中将日期转换为UNIX时间戳_Linux_Macos_Date_Shell - Fatal编程技术网

Linux 如何在MacOS上的shell脚本中将日期转换为UNIX时间戳

Linux 如何在MacOS上的shell脚本中将日期转换为UNIX时间戳,linux,macos,date,shell,Linux,Macos,Date,Shell,在Linux上,您可以通过以下方式将类似“2010-10-02”的日期转换为shell脚本中的unix时间戳 date -d "2010-10-02" "+%s" 因为Mac OS没有与日期对应的-d。如何在shell脚本中将日期转换为unix时间戳。OSX上的man date有此示例 date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s" 我想这正是你想要的 您可以将其用于特定日期 date -j -f "%a %b %d %T %Z %Y" "Tue

在Linux上,您可以通过以下方式将类似“2010-10-02”的日期转换为shell脚本中的unix时间戳

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

因为Mac OS没有与日期对应的-d。如何在shell脚本中将日期转换为unix时间戳。

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”


这对我在OSX Lion上的工作很好。

我在MacOSX上使用了以下内容

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

或者,您可以按如下方式安装GNU date:

  • 安装自制软件:
  • brew安装coreutils
  • 添加到您的bash_配置文件:
    alias date=“/usr/local/bin/gdate”
  • 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:%S
    00:00:00
    时,它将打印动态秒数。我编写了一组脚本,为
    日期的BSD和GNU版本提供统一的接口

    $ xsh /date/convert "2010-10-02" "+%s"
    1286020263
    
    Follow命令将输出日期
    2010-10-02
    的历元秒数,它同时适用于BSD和GNU版本的
    date

    $ xsh /date/convert "2010-10-02" "+%s"
    1286020263
    
    它相当于GNU版本的
    date

    date -d "2010-10-02" "+%s"
    
    date -j -f "%F" 2010-10-02 "+%s"
    
    以及BSD版本为
    date
    的命令:

    date -d "2010-10-02" "+%s"
    
    date -j -f "%F" 2010-10-02 "+%s"
    
    脚本可在以下位置找到:

    它是名为
    xsh lib/core
    的库的一部分。要使用它们,您需要repos
    xsh
    xsh lib/core
    ,我将它们列在下面:


    要将UTC中的日期转换为Unix时间戳,请执行以下操作:

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

    同样适用于Linux(Ubuntu10.04),OP询问如何将特定的给定日期转换为时间戳
    date+%s
    将只使用当前日期。在使用bash shell的OSX终端上,我无法使用上述命令Ex:currDate=
    date+%Y%m%d
    date-j-f“%a%b%d%T%Z%Y”“${currDate}”“++%s”@Jagdeep仅当指定的时区是系统时区时,此命令才能在OSX上工作。我在
    PDT
    中,因此在上面的命令中,更改
    EDT
    wtih
    PDT
    对我有效。很好,谢谢。如果您
    man strftime
    ,您将看到“%F相当于%Y-%m-%d”,“T相当于%H:%m:%S”。因此,我认为如果您愿意,可以将
    输入\u fmt
    缩短为“%F%T”。