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);

возвращает правильную дату.

Другие вопросы по тегам