Как преобразовать Длинный тип datetime в DateTime с правильным часовым поясом - PullRequest
23 голосов
/ 11 февраля 2011

Например 1297380023295 должно быть 2010/2/11 9 утра Я использую этот код прямо сейчас

        long dateNumber = num;
        long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
        DateTime dateValue = new DateTime(beginTicks + dateNumber * 10000);

        return dateValue;

Результатом этой функции является 1 час ночи, это время по Гринвичу. Что я могу с этим сделать?

Ответы [ 4 ]

48 голосов
/ 11 февраля 2011

Вы ищете метод ToLocalTime():

long unixDate = 1297380023295;
DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime date= start.AddMilliseconds(unixDate).ToLocalTime();
4 голосов
/ 30 июля 2012
long a= 634792557112051692;
//a= ticks time
  DateTime dt = new DateTime(a);
   Response.Write(dt.Hour.ToString());


//dt.hour convert time ticks to time hour
4 голосов
/ 11 февраля 2011

Вы можете указать DateTimeKind при создании нового объекта DateTime, чтобы вы могли указать его как UTC, а затем использовать .ToLocalTime для преобразования его в местное время:

        long dateNumber = 1297380023295;
        long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;

        DateTime dt = new DateTime(beginTicks + dateNumber * 10000, DateTimeKind.Utc);
        MessageBox.Show(dt.ToLocalTime().ToString());
0 голосов
/ 24 ноября 2015

Сценарий Powershell, только к вашему сведению

$minDate = New-Object "System.DateTime"
$minDate = $minDate.AddYears(1969)
$minDate.AddMilliseconds(1446616420947)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...