将8个字节(c#datetime ticks)转换为javascript datetime

时间:2018-03-28 22:22:45

标签: javascript c# datetime double

我有一个服务器服务,moniters并保持一堆c#客户端应用程序更新。我的一些数据包将日期发送给客户端。最新尝试使一些客户端更好(因为他们都有可以使用websockets的Web浏览器。但是c#代码有时会出现问题)我想我可以将相同的数据包发送到javascript并解析出我需要的东西。

我宁愿不更改现有数据包,也不打算创建另一个带有不同数据的字节[]发送到网络。无论如何从那8个字节中提取日期时间?

显而易见的问题是javascript中没有真正的长篇。 因此,重构long的c#方式不起作用

; javascript code to convert 8 bytes into a long
; shifting the number over 32 bits doesnt work as it goes into javascripts special place.
var num = ((arr[0 + offset] | (arr[1 + offset] << 8)) | (arr[2 + offset] << 0x10)) | (arr[3 + offset] << 0x18);
var num2 = ((arr[4 + offset] | (arr[5 + offset] << 8)) | (arr[6 + offset] << 0x10)) | (arr[7 + offset] << 0x18);
return num | (num2 << 0x20);

有没有办法将long转换为javascript日期时间?

; C # code

; Time | 3/28/2018 5:40:07 PM
; actual bytes = [28, 107, 42, 75, 215, 148, 213, 8]
var bytes = BitConverter.GetBytes(DateTime.Now.Ticks);

; go through web socket to javascript 

var received_Uint8Array = socket.receive();
; how to create date from 8 bytes

1 个答案:

答案 0 :(得分:0)

你应该再次使用BitConverter

var ticks = BitConverter.ToInt64(received_Uint8Array);
var dateTime = new DateTime(ticks);

但正如 Camilo Terevinto 所提到的,C#拥有广泛的实现系统