Преобразование местного времени (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 ответа:
Это выглядит как 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 или нет.