我们正在使用JSON API,它返回我们被告知的SQL Server日期时间格式的时间,例如:/ Date(-6847804800000 + 0000)
我正在尝试将其转换为unix时间以使用标准方法,有没有人知道这样做的简单方法?如果没有,将其转换为任何其他日期格式将会有所帮助。
PS:我们无法访问SQL Server数据库来更改API将数据吐出的方式。
答案 0 :(得分:2)
使用PowerShell快速检查:
PS> [datetime]"1970-01-01 00:00" + [timespan]::FromMilliseconds(-6847804800000)
01 January 1753 00:00:00
所以评论员Martin和Gerben似乎是正确的。这是从19700101T000000的毫秒偏移。
答案 1 :(得分:0)
该服务正在传递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;