我们正在使用JSON API,该API返回的时间格式是SQL Server日期时间格式,例如:/date (-6847804800000+0000)
我正试图将其转换为unix时间使用标准方法,有人知道一个简单的方法来做到这一点吗?如果没有,将其转换成任何其他类型的日期格式将会有所帮助。
PS:我们不能访问SQL Server数据库来改变API输出数据的方式
快速查看PowerShell:
PS> [datetime]"1970-01-01 00:00" + [timespan]::FromMilliseconds(-6847804800000)
01 January 1753 00:00:00
所以评论者Martin和Gerben似乎是正确的。这是相对于19700101T000000的毫秒偏移量。
服务正在传递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;