【问题标题】:git: timezone and timestamp formatgit:时区和时间戳格式
【发布时间】:2011-11-30 21:16:32
【问题描述】:

从 git 我可以得到时间戳:

"2011-10-04 12:58:36 -0600"

但是有什么办法可以显示为:

"2011-10-04 06:58:36"

所以我只想摆脱 -0600 时区偏移。我怎样才能做到这一点?谢谢。

【问题讨论】:

  • 仅供参考,2011-10-04 12:58:36 -0600 将是 2011-10-04 18:58:36 UTC。您在示例中转换错误。

标签: git timezone format timestamp timezone-offset


【解决方案1】:

如果您询问 git log,您可以尝试从以下位置选择最正确的形式:

git log --date={relative,local,default,iso,rfc}

--date=local 似乎是最佳人选。

要使其永久化,请使用git config --global log.date local

【讨论】:

  • 要使这个“永久”,使用“git config --global log.date local”。
  • local 有效。显然,提交包含它自己的时区,但local 将它们全部转换为本地时区。但是,我真的希望将 ISO 或 RFC 转换为单个时区。有人知道怎么做吗?
  • 啊! --date=iso-strict-local 用于严格的 ISO8601。甜!
  • 我不知道为什么 --date=localiso 格式无法在我的 Ubuntu 机器上运行。我仍然得到 TZ 偏移量。请帮忙
  • 我将您关于如何使其永久化的评论添加到答案本身@rickumali。谢谢
【解决方案2】:
TZ=UTC git log --date=local

为了得到non-local-timezone one-timezone的输出。

【讨论】:

  • TZ=UTC git log --date=iso-local 使用 ISO 8601
  • --date='format-local:%Y%m%dT%H%M%SZ' 用于紧凑的 ISO 8601 格式(或任何其他格式)。
  • 我用date = format-local:%a %d-%b-%Y %H:%MFri 05-Oct-2018 19:55。这是日期格式列表stackoverflow.com/a/34778736/58678
【解决方案3】:
git log --date=local

成功了。

git config --global log.date local

【讨论】:

  • 当我运行时:git log --date=local --pretty=format:"%ai,%an,%ae,%s",我仍然得到时区偏移。 --data=local 不适用于 iso 日期吗?
  • @user2436428 如果你检查 git log documentation 搜索 format: 你会看到你需要使用:%ad :作者日期(格式尊重 --date= 选项) 而不是 %ai:作者日期,类似 ISO 8601 的格式
【解决方案4】:

如果你想以 YYYY-MM-DD HH:MM:SS 格式显示 git 日期:

DATE=$(git log -n 1 --pretty=format:"%ad" --date=iso)
echo "日期:${DATE::20}"

【讨论】:

    【解决方案5】:

    不幸的是,使用 git log --date=local 如先前答案中所述更改输出格式。

    为了保持所要求的格式 (YYYY-MM-DD HH:mm),我不得不使用:

    git log --date=iso-local
    

    但这仅适用于 git 2.7 或更高版本。

    【讨论】:

      【解决方案6】:

      要获取格式(YYYY-MM-DD HH:hh),您可以使用:

      git log --date=format:%Y-%m-%d\ %H:%M
      

      也可以与 Git Standup 完美配合:https://github.com/kamranahmedse/git-standup

      【讨论】:

        【解决方案7】:

        jveerman 的帖子真的很有帮助:

        如果你想以 YYYY-MM-DD HH:MM:SS 格式显示 git 日期:

        DATE=$(git log -n 1 --pretty=format:"%ad" --date=iso)
        echo "Date: ${DATE::20}"
        

        对于日志格式,我可以添加这个

        [log]
        date=format:%Y-%m-%d %H:%M:%S
        

        到我的 ~/.gitconfig

        但是将相同格式的日期/时间自动添加到我的提交消息中是一种考验。在将其添加到 .git/hooks/prepare-commit-msg 文件之前,我发现没有任何帮助:

        DATE=$(git log -n 1 --pretty=format:"%ad" --date=iso)
        echo "${DATE::20}" >> $1
        

        如果您主要使用桌面应用程序,那么在提交列表中显示更改的确切时间真是太好了!

        有没有办法让这个全局化,所以我不必编辑每个本地 repo 的 prepare-commit-msg 文件?

        【讨论】:

          【解决方案8】:

          完整的命令行答案:

          TZ=GMT git show -s --format=%cd --date=iso-local
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-01-11
            • 2020-09-25
            • 2015-03-11
            • 1970-01-01
            • 1970-01-01
            • 2011-12-04
            相关资源
            最近更新 更多