我在C#中使用Nesper引擎(http://www.espertech.com/esper/nesper.php),我正面临一个问题。
当试图检索引擎的内部时间时,返回的日期似乎是错误的,因为它是昨天的日期。
下面的代码是一个复制问题的虚拟样本。 根据我的理解' engineTime'和' DateTime.UtcNow'应该是平等的,但事实并非如此。
using com.espertech.esper.client;
using System;
namespace NesperDate_bug
{
class Program
{
static void Main(string[] args)
{
EPServiceProvider _esperSvc = EPServiceProviderManager.GetProvider("test", new Configuration());
DateTime engineTime = Nesper2DateTime(_esperSvc.EPRuntime.CurrentTime);
Console.WriteLine("Esper engine time:\t" + engineTime);
Console.WriteLine("System utc time:\t" + DateTime.UtcNow);
Console.ReadKey();
}
private static DateTime Nesper2DateTime(long millisec)
{
return new DateTime(millisec * 10000);
}
}
}
我在控制台中获得的结果是:
Esper engine time: 16/09/2017 10:30:25
System utc time: 17/09/2017 10:30:25
问题来自Nesper,还是我的Nesper2DateTime'功能错了?
感谢您的帮助
答案 0 :(得分:0)
看着Nesper'源代码,看来我的Nesper2DateTime'功能错了。它适用于使用Nesper' DateTimeHelper.UtcFromMillis'功能
以下
{{1}}
返回正确的日期。