首页 > 解决方案 > 避免在 Azure EventGrid 中将 DateTimeOffset 转换为 UTC 时间

问题描述

我一直在测试 Azure 的 EventGrid,我想做的一件事是发送一个事件,其中 PayLoad 的一部分是 DateTimeOffset 字段。我正在使用标准 EventGridClient 发布事件:

using (var client = new EventGridClient(topicCredentials))
{
    await client.PublishEventsAsync(topicHostname, eventGridEvents).ConfigureAwait(false);
}

我已经启动了 Fiddler 并验证了日期部分正在按我的预期进行序列化:“CheckInDate”:“2018-12-26T14:47:42.8-08:00”

但是,当我订阅的 Azure Functions 侦听器接收到 HttpTrigger 并读取消息的内容时,相同的项目以某种方式被格式化为 UTC:“CheckInDate”:“2018-12-26T22:47:42.8+00:00”。

是否有设置或我需要启用它以保留原始偏移量?

标签: c#azureazure-functionsazure-eventgrid

解决方案


虽然在后端使用UTC通常是最佳实践(所以我会考虑保留它,除非有特定需要使用本地时间),但我认为您应该尝试将偏移量存储在专用字段中,然后进行转换使用该偏移量将其返回到接收方的相关本地时间。

查看DateTimeOffset Struct以了解如何进行转换。

希望能帮助到你!


推荐阅读