【发布时间】:2017-12-31 15:10:00
【问题描述】:
我有一个带有 DateRanges 谓词的简单 NEST 查询:
DateTimeOffset dt;
...
.DateRange(r => r
.Field("Time")
.LessThanOrEquals(dt)
根据this question,简单地将DateTimeOffset转换为DateTime可能会导致数据丢失。 LessThanOrEquals 和其他谓词方法接受Nest.DateMath 类型的对象,它具有以下运算符:
public static implicit operator DateMath(DateTime dateTime);
public static implicit operator DateMath(string dateMath);
另外DateRangeQueryDescriptor还有一个方法:
public DateRangeQueryDescriptor<T> TimeZone(string timeZone);
但我不知道如何使用它。
问题:
如何使用DateTimeOffset 对象作为NEST 中DateRange 谓词的值,并确保发送到Elastic 的日期是正确的?
【问题讨论】:
-
根据您提到的参考帖子,您可以将转换后的
DateTime与Offset(转换为TimeZone)一起使用吗?我会问额外的挑战,为什么你首先有DateTimeOffset。 -
可能是。我想确保我没有在这里犯愚蠢的错误。在提到的问题中,您可以找到一个原因为什么更喜欢
DateTimeOffset而不是DateTime- 在我们的例子中这是必要的。这是将TimeSpan转换为TimeZone字符串的方法。 stackoverflow.com/a/14420648/1151392
标签: c# .net elasticsearch nest