Emacs i Git wyświetlają niewłaściwy czas w systemie Windows

Emacs ma dwie godziny przerwy od czasu systemowego. Próbowałem poszukać go w Google, ale nie miałem szczęścia. Co muszę skonfigurować, aby to poprawić? Podejrzewam, że to różnica między GMT a miejscem, w którym mieszkam (jestem w strefie GMT + 2, to znaczy, jeśli odejmę od czasu systemowego 2, otrzymam czas w Emacs). Więc ... może to jakieś ustawienia regionalne?

Właśnie pomieszałem repozytorium git z tego powodu: dokonałem zatwierdzeniamagit użyłem czasu Emacsa i umieściłem je przed zatwierdzeniem przez kogoś innego :(

Tutaj dodałem zrzut ekranu pokazujący różnicę. Wyjście zdate jest właściwym czasem, ale czas na frędzli modeline jest nieprawidłowy.

EDIT0:

Wygląda na to, że Stefan ma rację, a czas w Gicie nie jest połączony z czasem w Emacsie (poniższy zrzut ekranu pochodzi z terminalu Cygwin).

To pytanie jest tak samo istotne dla Gita, jak i dla Emacsa - w jakiś sposób używają jakiegoś systemu API, który nie jest zsynchronizowany na moim komputerze - i to jest coś, co muszę skonfigurować, aby je wyrównać. Pytanie brzmi: czym jest to ustawienie, którego oboje używają?

EDIT1:

Oto kod, którego Emacs używa do odzyskania czasu, afaik:

/* Emulate gettimeofday (Ulrich Leodolter, 1/11/95).  */
int
gettimeofday (struct timeval *__restrict tv, struct timezone *__restrict tz)
{
  struct _timeb tb;
  _ftime (&tb);

  tv->tv_sec = tb.time;
  tv->tv_usec = tb.millitm * 1000L;
  /* Implementation note: _ftime sometimes doesn't update the dstflag
     according to the new timezone when the system timezone is
     changed.  We could fix that by using GetSystemTime and
     GetTimeZoneInformation, but that doesn't seem necessary, since
     Emacs always calls gettimeofday with the 2nd argument NULL (see
     current_emacs_time).  */
  if (tz)
    {
      tz->tz_minuteswest = tb.timezone; /* minutes west of Greenwich  */
      tz->tz_dsttime = tb.dstflag;  /* type of dst correction  */
    }
  return 0;
}

I wygląda na totz źle. Nie wiem co_ftime jest - ale wydaje się, że nie jest zdefiniowane w źródłach Emacsa, musi pochodzić z innego miejsca ...

Kolejne badania:

SBCL zainstalowany z MSI daje to:

(defconstant *day-names*
    '("Monday" "Tuesday" "Wednesday"
      "Thursday" "Friday" "Saturday" "Sunday"))
(multiple-value-bind
    (second minute hour date month year day-of-week dst-p tz)
    (get-decoded-time)
    (format t "It is now ~2,'0d:~2,'0d:~2,'0d of ~a, ~d/~2,'0d/~d (GMT~@d)"
          hour minute second (nth day-of-week *day-names*)
          month date year (- tz)))

Wydajność:(rzeczywisty czas to 12:56)

It is now 10:56:55 of Tuesday, 6/04/2013 (GMT+0)

Perl z ActivePerl (zainstalowany z Cygwin):

$now = localtime;
print $now;

Wydajność:(rzeczywisty czas to 12:52)

Tue Jun  4 12:52:17 2013

CPython, zainstalowany z MSI.

import datetime
str(datetime.datetime.now())

Wydajność:(rzeczywisty czas to 13:03)

2013-06-04 11:03:49.248000

JavaScript, Node.js, zainstalowany z MSI:

Date();

Wydajność:(rzeczywisty czas to 12:09)

Tue Jun 04 2013 10:09:05 GMT+0000 (IST)

Bash (Cygwin):

$ date

Wydajność:(rzeczywisty czas to 13:10)

04 Jun, 2013 13:10:37

DO#:

using System;

namespace TestTime
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime d = DateTime.Now;
            Console.WriteLine("Today: {0}", d);
            Console.ReadLine();
        }
    }
}

Wydajność:(rzeczywisty czas to 13:13)

Today: 04-Jun-13 13:13:37

EDIT2:

Dzisiaj nasz sysadmin dał mi maszynę wirtualną do przeniesienia moich rzeczy. Co ciekawe, tym razem zdarzyło mi się, że tym razem dostałem Gita przez Cygwina, a teraz Git pokazuje poprawne czasy. Jednak Emacs wciąż pokazuje niewłaściwy czas. Python (nie ten w pakiecie z Cygwinem) pokazuje poprawny czas, jeśli został uruchomiony z Cygwina, a zły czas, jeśli został uruchomiony z Emacsa! SBCL pokazuje nieprawidłowy czas bez względu na sposób uruchomienia.

Czy to możliwe, że jest to jakieś ustawienie sieciowe? Być może coś ma wspólnego z tym, jak system Windows synchronizuje czas systemowy?

questionAnswers(1)

yourAnswerToTheQuestion