在用户的时区中以ISO格式显示git日志时间戳?

Mis*_*ble 7 git datetime

随着--date=local git log我的(用户)的时区显示日期:

$ git log  --date=local -3 --pretty=tformat:'%cd %h' --abbrev-commit 
Thu Dec 18 15:22:11 2014 dc20f74
Thu Dec 18 14:01:26 2014 06c214f
Tue Nov 4 03:48:44 2014 ac33158
Run Code Online (Sandbox Code Playgroud)

手册页

- date [...]仅对以人类可读格式显示的日期生效,例如使用--pretty时.

但是使用ISO格式%ci它不会生效,事实上--date=local--date=default产品完全相同的输出:

$ git log  --date=local -3 --pretty=tformat:'%ci %h' --abbrev-commit 
2014-12-18 23:22:11 +0000 dc20f74
2014-12-18 22:01:26 +0000 06c214f
2014-11-04 17:18:44 +0530 ac33158

$ git log  --date=default -3 --pretty=tformat:'%ci %h' --abbrev-commit 
2014-12-18 23:22:11 +0000 dc20f74
2014-12-18 22:01:26 +0000 06c214f
2014-11-04 17:18:44 +0530 ac33158
Run Code Online (Sandbox Code Playgroud)

如何在本地时区以较简洁的格式查看git log?理想情况下,我想看到它们'%C%m%dT%H%M%S',使用unix日期语法.

Von*_*onC 8

git 2.7(2015年第4季度)可以-local作为指令引入.

这意味着,除了:

--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
Run Code Online (Sandbox Code Playgroud)

你还将:

--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)
Run Code Online (Sandbox Code Playgroud)

您现在可以使用本地时区要求任何日期格式.

在你的情况下:

git log  --date=iso-local -3 --pretty=tformat:'%cd %h' --abbrev-commit
                ^^^^^^^^^
                   |____| that part is new!
Run Code Online (Sandbox Code Playgroud)

请参阅John Keeping()提交99264e9,提交db7bae2,提交dc6d782,提交f3c1ba5,提交f95cecf,提交4b1c5e1,提交8f50d26,提交78a8441,提交2df4e29(2015年9月3日). 请参阅提交add00ba,提交547ed71(2015年9月3日)作者:Jeff King().(由Junio C Hamano合并- -提交7b09c45,2015年10月5日)johnkeeping
peff
gitster

特别是,提交add00ba提到:

date:make" local"与日期格式正交:

我们的大多数" --date"模式都是关于日期的格式:我们展示的项目和顺序.
但" --date=local"有点奇怪.它表示"以正常格式显示日期,但使用本地时区".
我们使用的时区与实际格式正交,没有理由我们没有"本地化的iso8601"等.

这个补丁将" local"布尔字段添加到" struct date_mode",并DATE_LOCALdate_mode_type枚举中删除该元素(现在只是DATE_NORMAL加号local=1).
用户可以通过向-local任何日期模式添加" "来访问新功能(例如," iso-local"),并且为了向后兼容性,我们保留" local"作为" "的别名default-local.

  • 这似乎没有按预期工作,至少在带有 git 2.7.4-2.fc24 的 Fedora 上: `git log --date=iso-local -3 --pretty=tformat:'%cd %h' -- abbrev-commit` 生成 `2016-03-11 15:51:49 +1000 67398e9`,即带有时区。 (2认同)

dcs*_*ohl 2

似乎无法显示%ci转换为本地用户时区的(ISO时间格式);它始终显示在提交者的时区中。您可以使用%ct和解析输出,并使用类似实用程序date或其他脚本或使用%cd.