Emacs и Git показывают неверное время в Windows

Emacs находится в двух часах от системного времени. Я пытался гуглить за проблему, но не повезло. Что мне нужно настроить, чтобы исправить это? Я подозреваю, что это разница между GMT и местом, где я живу (я нахожусь в зоне GMT + 2, то есть, если вычесть системное время 2, я получу время в Emacs). Итак ... может быть, это какие-то локальные настройки?

Я просто испортил git-репозиторий из-за этого: коммиты сделаны черезmagit использовал время Emacs и поместил их перед коммитами, сделанными кем-то другим :(

Здесь я добавил скриншот, показывающий разницу. Выход изdate правильное время, но неправильное время на модельной линии.

EDIT0:

Похоже, Стефан прав, а время в Git не связано со временем в Emacs (скриншот ниже из терминала Cygwin).

Этот вопрос так же актуален для Git, как и для Emacs - так или иначе, они используют какой-то системный API, который не синхронизируется на моем ПК - и это то, что мне нужно настроить, чтобы выровнять их по нему. Вопрос в том, что это за настройка, которую они оба используют?

EDIT1:

Вот код, который Emacs использует для получения времени, 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;
}

И, похоже, он получаетtz неправильно. Я не знаю что_ftime есть - но, похоже, это не определено в источниках Emacs, это должно быть откуда-то еще ...

Еще немного исследований:

SBCL, установленный от MSI, дает следующее:

(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)))

Выход:(фактическое время 12:56)

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

Perl из ActivePerl (установлен из Cygwin):

$now = localtime;
print $now;

Выход:(фактическое время 12:52)

Tue Jun  4 12:52:17 2013

CPython, установленный от MSI.

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

Выход:(фактическое время 13:03)

2013-06-04 11:03:49.248000

JavaScript, Node.js, установленный из MSI:

Date();

Выход:(фактическое время 12:09)

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

Баш (Cygwin):

$ date

Выход:(фактическое время 13:10)

04 Jun, 2013 13:10:37

C #:

using System;

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

Выход:(фактическое время 13:13)

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

EDIT2:

Сегодня наш системный администратор дал мне виртуальную машину, чтобы переместить мои вещи. Интересно, что случилось то, что на этот раз я получил Git через Cygwin, и теперь Git показывает правильное время. Emacs, однако, все еще показывает неправильное время. Python (не тот, что входит в комплект Cygwin) показывает правильное время при запуске из Cygwin и неправильное время при запуске из Emacs! SBCL показывает неправильное время, независимо от того, как оно запускается.

Возможно ли, что это какая-то сетевая настройка? Возможно, что-то связано с тем, как Windows синхронизирует системное время?

Ответы на вопрос(1)

Ваш ответ на вопрос