この問題には未解決のバグがあります。ソースから git をビルドした場合は、test-date
ユーティリティが含まれています。これは、さまざまな日付を実行した結果の一部です (注 - 18 日は私にとってブレークポイントではなくなったため、19 日を使用しています)。
$ ./test-date approxidate "2013-3-01 0am"
2013-3-01 0am -> 2013-03-01 19:22:21 +0000
$ ./test-date approxidate "2013-3-11 0am"
2013-3-11 0am -> 2013-03-11 19:22:21 +0000
$ ./test-date approxidate "2013-3-19 0am"
2013-3-19 0am -> 2013-03-03 19:22:21 +0000
どのような場合でも時間に問題があることは明らかなので、時間を修正しましょう。
$ ./test-date approxidate "2013-3-01 0:00"
2013-3-01 0:00 -> 2013-03-01 08:00:00 +0000
$ ./test-date approxidate "2013-3-19 0:00"
2013-3-19 0:00 -> 2013-03-19 07:00:00 +0000
それは少し良くなり、私たちの将来の日付はもはや深刻な誤りではありませんが、時間は私のタイムゾーンに関連しており、DST がある場合とない場合では異なります (E: 将来の読者のために、DST シフトは 2013-03-10 に発生しました)であるため、これらの日付にはシフトが含まれます)。
$ ./test-date approxidate "2013-3-19 0:00 +0000"
2013-3-19 0:00 +0000 -> 2013-03-19 00:00:00 +0000
今、私たちの日付は少し良くなっています. -0800
タイムゾーンを有効にしたい場合は、 / -0700
、PST
、PDT
、またはその他のタイムゾーンに簡単に変更できるようになりました。
要するに、次の 2 つの問題があります。
- 時間が正しく解析されていません。時刻コンポーネントが含まれると、git は日付の解析についてよりスマートになります。
任意の日付を解析するために、git は your を破棄し、現在の月の日付に yourdd
を使用します。mm
$ ./test-date approxidate "2013-3-20"
2013-3-20 -> 2013-03-03 19:22:21 +0000
$ ./test-date approxidate "2013-4-19"
2013-4-19 -> 2013-03-04 19:22:21 +0000
$ ./test-date approxidate "2013-4-32"
2013-4-32 -> 2013-03-04 19:22:21 +0000
時間を修正し、意図に応じてオプションでタイムゾーンを追加することで、問題を修正できるはずです。