2009-11-19 6 views
5

Должно быть, я совершу явную ошибку, но я не могу понять это.Unix timestamp to .net DateTime

Я импортирую дату, хранящуюся в базе данных mysql (она хранится в CMS ExpressionEngine). Это временная метка unix, то есть секунд с 01.01.1970 00:00.

Так что я делаю что-то вроде этого:

DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); 
dateTime = dateTime.AddSeconds(orderdate /* int read from the database */); 

К сожалению, я не получаю правильный результат. Вот пример:

Значение считывается из БД: (это дата заказа)

Paypal отправлен по электронной почте, устанавливающее порядок в 18 ноября 2009 12:45:20 PST

Веб-сайт php, который считывает это значение в БД и знает, как правильно отображать эту дату, отображает его как 2009-11-18 03:45 PM (что кажется правильным, поскольку я размещен на сервере на восточное побережье)

Мой код выше дает 19.11.2009 2:45:28 AM !! (UTC, который дает 11/18/2009 21:45 по восточному времени, то есть 6-часовую разницу с тем, что ожидается)

Получаю тот же результат, если вы используете DateTimeOffset, заботясь о том, чтобы установить правильный часовой пояс.

Любая идея, что я делаю неправильно?

ответ

9

Попробуйте это:

DateTime epoch = new DateTime(1970,1,1,0,0,0,0, DateTimeKind.Utc); 
DateTime myDate = epoch.AddSeconds(1258598728).toLocalTime(); 
+0

Отпечатки: 11/18/2009 9:45:28 здесь (GMT-4) – Gonzalo

+0

да, я все еще такое же значение I get (разница в 6 часов с ожидаемым значением) –

+0

ну, значит, это проблема с данными. – scottm

0

Ваше преобразование является правильным, данные неправильно. Это самое простое и вероятное объяснение.

Смежные вопросы