Nesper engine/C#: проблема во внутреннем текущем времени
Я использую движок Nesper ( http://www.espertech.com/esper/nesper.php) в C# и столкнулся с проблемой.
При попытке получить внутреннее время двигателя возвращаемая дата кажется неправильной, поскольку это дата вчерашнего дня.
Приведенный ниже код является фиктивным примером, который воспроизвел проблему. Из того, что я понимаю, 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 неверна?
Спасибо за вашу помощь
1 ответ
После просмотра исходного кода Nesper выяснилось, что моя функция Nesper2DateTime была неправильной. Это работает при использовании функции DateTimeHelper.UtcFromMillis в Nesper.
Следующие
using com.espertech.esper.compat;
DateTime engineTime = DateTimeHelper.UtcFromMillis(_esperSvc.EPRuntime.CurrentTime);
возвращает правильную дату.