Преобразование местного времени (10-значный номер) в читаемый формат datetime


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

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

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

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

  • Datetime dt = new Datetime (number);
  • Timespan ts = new Timespan (number);
  • datetime в формате UTC = новый объект datetime(количество + 504911232000000000, значение datetimekind.Utc)

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

Неужели я упустил что-то глупое?

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

4 5

4 ответа:

Это выглядит как Unix Время.

1268927156 = чт, 18 марта 2010 15: 45: 56 GMT

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

DateTime startDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
DateTime time = startDate.AddSeconds(1268927156 );

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

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

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

Я предполагаю, что это временная метка 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);

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

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

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