Преобразование времени Unix в C # [дубликат]

На этот вопрос уже есть ответ здесь:

Я пытаюсь получить время по Гринвичу в формате Unix. Я использую следующий код:


        public static long GetGMTInMS()
        {
            var unixTime = DateTime.Now.ToUniversalTime() -
                new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            return (long)unixTime.TotalMilliseconds;
        }

Чтобы затем преобразовать время unix обратно в объект DatTime, я использую это:


        public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
        {
            System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            dtDateTime = dtDateTime.AddMilliseconds(unixTimeStamp).ToLocalTime();
            return dtDateTime;
        }

Когда я запускаю его, GetGMTInMS () 1320249196267 . Когда я передаю его UnixTimeStampToDateTime () , я получаю {2.11.2011 11:53:16 AM}

И это нормально. Это правильное время, когда я запускал свой код. У меня возникает проблема, когда я пытаюсь поместить 1320249196267 в преобразователь времени unix, такой как this , он возвращает совершенно неправильное время.

Другая проблема, я нахожусь в восточном часовом поясе. Это вернуло время в моем часовом поясе. Это то, что обрабатывает объект DateTime , или я не получаю GMT?

35
задан user489041 2 November 2011 в 16:00
поделиться