Преобразуйте местное время (10 чисел цифры) к читаемому формату даты и времени

Я работаю с АТС для вызовов VoIP. Один аспект АТС - то, что можно принять решение получить пакеты CDR. Те пакеты имеют 2 метки времени: "UTC" и "локальный", но оба, кажется, всегда то же.

Вот пример метки времени: "1268927156".

На первый взгляд, кажется, нет никакой логики в нем. Таким образом, я пытался преобразовать его несколько путей, но без хорошего результата. То значение должно обеспечить время около 11:00 (+1GMT) сегодня.

Вещи я попробовал:

  • Дата и время dt = новая Дата и время (число);
  • Промежуток ts = новый Промежуток (число);
  • DateTime utc = новый DateTime (число + 504911232000000000, DateTimeKind. UTC)

и некоторые другие я не могу помнить прямо сейчас.

Я пропускаю что-то глупое здесь?

Заранее спасибо

5
задан Terry 2 November 2011 в 14:38
поделиться

4 ответа

Это похоже на Unix время.

1268927156 = Thu, 18 Mar 2010 15:45:56 GMT

И пример кода:

DateTime startDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
DateTime time = startDate.AddSeconds(1268927156 );
12
ответ дан 18 December 2019 в 10:43
поделиться

Я предполагаю, что это временная метка UNIX, логика будет следующей:

Временная метка UNIX представляет собой время, измеряемое в количестве секунд с момента эпохи Unix (1 января 1970 года 00:00:00 GMT)

Есть статья codeproject, объясняющая преобразование. По сути, вам нужно сделать следующее:

// First make a System.DateTime equivalent to the UNIX Epoch.
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
// Add the number of seconds in UNIX timestamp to be converted.
dateTime = dateTime.AddSeconds(timestamp);
1
ответ дан 18 December 2019 в 10:43
поделиться

Это похоже на временную метку unix, которая представляет собой количество секунд с 01 января 1970 года.

DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(1268927156);

Если и utc, и локальные временные метки одинаковы, то временная зона на вашей АТС либо установлена на UTC, и ваши временные метки действительно UTC, либо временная зона установлена на UTC, но время установлено на ваше местное время, и вы получаете ваше местное время для обеих временных меток. Вам нужно будет выяснить, что из этого следует, чтобы знать, конвертировать временные метки из UTC или нет.

1
ответ дан 18 December 2019 в 10:43
поделиться

Похоже, это временная метка Unix (количество секунд с момента эпохи)

DateTime translated = new DateTime(1970,1,1).AddSeconds(1268927156);

должна дать вам дату и время, которые вы искали...

2
ответ дан 18 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: