Azure事件中心:事件返回已知/不寻常的日期格式



我们使用Azure事件中心(Message Broker(来生成事件并将其存储在该服务中。

作为事件生产者:许多事件/消息被推送到Azure事件中心空间,所有这些事件都具有以下格式(类似(:

{
body:{
id: 3123123123,
name: "name",
parentId: "12123esczxcxef"
},
properties:{
event:"sample.type-saved",
token:"tokenise data",
**timestamp: 638018037948740000**  //c# tick DateTime
},
//additional info
}

properties.timestamp值使用刻度时间(长(发送。

作为事件消费者:使用EventHubConsumerClient.subscribe,客户端开始从Azure中的事件中心接收事件/消息,如下所示:

{
body:{
id: 3123123123,
name: "name",
parentId: "12123esczxcxef"
},
properties: {
event: 'platform.location-sendall',
token: 'eyJhbGciOiJod...',
**timestamp: [Object]**
},
offset: '4295510040',
sequenceNumber: 488,
enqueuedTimeUtc: 2022-10-19T18:38:11.600Z,
partitionKey: undefined,
systemProperties: {},
getRawAmqpMessage: [Function: getRawAmqpMessage]
}

收到properties.timestamp,并且具有[Object]日期未知格式,,并且不知道如何解析或转换它

properties.timestamp[Object]的一个例子是:

{
'0': 8,
'1': 218,
'2': 178,
'3': 1,
'4': 19,
'5': 222,
'6': 23,
'7': 128
}
  1. 为什么Event Hub会返回这种时间戳Date值
  2. 如何解析此日期值
  3. 任何其他相关信息都会有所帮助

我明白了,上下文中的timestamp表示ticks。在SQL Server中,您可以执行以下操作:

DECLARE @t bigint = 638018037948740000;
SELECT CONVERT(datetime, 
(@t - 599266080000000000) -- subtract ticks for 1900-01-01
/ 10000000 -- divide by microseconds 
/ 86400);  -- then by seconds in a day

2022-10-19 19:16:34.873

在C#中,您可以像在您引用的URL中一样使用Datetime..Ticks(不是C#人员,因此无法在那里帮助您(。

只需确保不要尝试将输出存储在timestamp列中,因为在SQL Server中,这与日期/时间无关。

相关内容

  • 没有找到相关文章