我在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‘函数错误?
谢谢你的帮忙
发布于 2017-09-18 02:44:25
在查看了Nesper的源代码后,我的'Nesper2DateTime‘函数似乎是错误的。当使用Nesper的'DateTimeHelper.UtcFromMillis‘函数时,它可以工作。
以下是
using com.espertech.esper.compat;
DateTime engineTime = DateTimeHelper.UtcFromMillis(_esperSvc.EPRuntime.CurrentTime);
返回正确的日期。
https://stackoverflow.com/questions/46263111
复制相似问题