Преобразование формата времени данных SQL Server в время Unix - PullRequest
1 голос
/ 01 мая 2011

Мы работаем с JSON API, который возвращает время в том виде, в котором нам сообщили, в формате даты и времени SQL Server, например: / Date (-6847804800000 + 0000)

Я пытаюсь преобразоватьэто в Unix время использовать стандартные методы на нем, кто-нибудь знает простой способ сделать это?В противном случае было бы полезно преобразовать его в любой другой формат даты.

PS: у нас нет доступа к базе данных SQL Server, чтобы изменить способ, которым API выводит данные.

Ответы [ 2 ]

2 голосов
/ 01 мая 2011

Быстрая проверка с PowerShell:

PS> [datetime]"1970-01-01 00:00" + [timespan]::FromMilliseconds(-6847804800000)

01 January 1753 00:00:00

Таким образом, комментаторы Мартин и Гербен кажутся правильнымиЭто смещение в миллисекундах от 19700101T000000.

0 голосов
/ 03 мая 2011

Служба отключается SqlDateTime.MinValue + часы дня, о котором она говорит.

База 1753 используется для определения значения смещения, вместо этого используется 1970.

Во-первых, вы хотите взять возвращенное значение -6847804800000 и добавить общее количество миллисекунд между 1753 и 1970 годами. Это даст вам смещение по сравнению с 1970 годом.

        SqlDateTime minSqlDateTime = SqlDateTime.MinValue;

        DateTime minTimeStampDateTime = new DateTime(1970, 1, 1);

        double milli = (minTimeStampDateTime - (DateTime)minSqlDateTime).TotalMilliseconds; // = 6847804800000

        double toDetermineTicks = -6847804080000; // so this is 01/01/1753 12:00 PM

        double ActualUnixTicks = (toDetermineTicks + milli) / 1000;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...