На этот вопрос уже есть ответ здесь:
Я пытаюсь получить время по Гринвичу в формате 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?