gpt4 book ai didi

.net - 是否可以在输出模板中将时间戳记为 DateTimeKind.Utc?

转载 作者:行者123 更新时间:2023-12-04 02:09:28 26 4
gpt4 key购买 nike

目前当我使用 {Timestamp}在 outputTemplate 中,它似乎是由 DateTime.Now 生成的因此属于 DateTimeKind.Local flavor ,因为当我给它一个“o”说明符时,它会产生类似于 2016-02-12T09:51:34.4477761-08:00 的输出

对于上面的例子,我想得到的是 2016-02-12T17:51:34.4477761Z ,本来可以生产 Timestamp曾经的 DateTimeKind.Utc .

更新

看起来它实际上是DateTimeOffset that gets instantiated there所以没有 DateTimeKind是有效的,而不是看起来像底层 DateTime永远是 DateTimeKind.Unspecified . MSDN请注意,格式化 DateTimeOffset 时的行为存在一些差异。对比 DateTime , 具体来说:

"u" -- Converts the DateTimeOffset value to UTC and outputs it using the format yyyy-MM-dd HH:mm:ssZ.



转换正是我想要的,但我也需要分数。

最佳答案

出现在DateTimeOffset中的限制格式化将阻止这一点。

另一种选择(只要附加属性不会在其他地方膨胀输出)是添加一个 Serilog ILogEventEnricher到管道:

class UtcTimestampEnricher : ILogEventEnricher {
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory lepf) {
logEvent.AddPropertyIfAbsent(
lepf.CreateProperty("UtcTimestamp", logEvent.Timestamp.UtcDateTime));
}
}

然后您可以使用 {UtcTimestamp:o}在您的输出模板中获取您需要的值。

关于.net - 是否可以在输出模板中将时间戳记为 DateTimeKind.Utc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35369491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com