git: формат часового поясу та позначки часу


76

З git я можу отримати позначку часу:

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

але чи є спосіб показати це як:

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

Тому все, що я хочу - це позбутися від зміщення часового поясу -0600. Як я можу це зробити? Дякую.


6
FYI, 2011-10-04 12:58:36 -0600це буде 2011-10-04 18:58:36UTC. Ви неправильно перетворили у своєму прикладі.
Метт Джонсон-Пінт,

Відповіді:


89

Якщо ви запитаєте про git log, ви можете спробувати вибрати найбільш правильну форму з:

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

--date=local здається найкращим кандидатом.

Щоб зробити це постійним, використовуйте git config --global log.date local.


48
Щоб зробити це "постійним", використовуйте "git config --global log.date local".
rickumali

12
localробіт. Очевидно, коміт включає власний часовий пояс, але localперекладає їх усі у місцевий часовий пояс. Однак я дуже хочу перекласти ISO або RFC в єдиний часовий пояс. Хтось знає, як це зробити?
cdunn2001,

2
Ах! --date=iso-strict-localза суворим стандартом ISO8601. Солодко!
cdunn2001

2
Я не знаю, чому --date=localз isoформатом не працюють мої машини Ubuntu. Я все ще отримую компенсацію TZ. Будь-яка допомога, будь ласка
user2436428

1
Я додав ваш коментар про те, як зробити це постійним, до самої відповіді @rickumali. Дякую
Елайджа Лінн,

35
git log --date=local

Робить фокус.

git config --global log.date local

1
Коли я запускаю:, git log --date=local --pretty=format:"%ai,%an,%ae,%s"я все ще отримую зміщення часового поясу. Не --data=localпрацює з датами iso ?
user2436428

@ user2436428 якщо ви перевірите пошук документації git у форматі: <string>, ви побачите, що вам потрібно використовувати: % ad : автор дата (формат поважає - дата = параметр) замість % ai : дата автора, формат, схожий на ISO 8601
ptha

32
TZ=UTC git log --date=local

щоб отримати одноразовий вихід часового поясу не в місцевому часовому поясі.


TZ=UTC git log --date=iso-localвикористовувати ISO 8601
Бріс,

4
Або --date='format-local:%Y%m%dT%H%M%SZ'для компактного формату ISO 8601 (або будь-якого іншого формату).
Робінст

я date = format-local:%a %d-%b-%Y %H:%Mдаю Fri 05-Oct-2018 19:55. Ось список форматів дати stackoverflow.com/a/34778736/58678
Хіппі

8

На жаль, використання, git log --date=localяк пояснювалось у попередніх відповідях, змінює вихідний формат.

Щоб зберегти формат за запитом ( YYYY-MM-DD HH:mm), мені довелося використати:

git log --date=iso-local

Але це працює лише на git 2.7 або вище.



2

Допис jveerman був справді корисним:

Якщо ви хочете відобразити дату git у РРРР-ММ-ДД ЧЧ: ММ: формат SS:

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 / priprema-коміт-msg:

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

Якщо ви в основному використовуєте програму Desktop, чудово мати точний час зміни, показаний у списку комітів!

Чи є якийсь спосіб зробити це глобальним, тому мені не потрібно редагувати кожен файл місцевого репо-файлу prepa-commit-msg?



0

Якщо ви хочете відобразити дату git у РРРР-ММ-ДД ЧЧ: ММ: формат SS:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.