0

我在 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”功能错误?

谢谢你的帮助

4

1 回答 1

0

查看 Nesper 的源代码后,我的“Nesper2DateTime”函数似乎是错误的。它在使用 Nesper 的“DateTimeHelper.UtcFromMillis”函数时有效。

以下

using com.espertech.esper.compat;
DateTime engineTime = DateTimeHelper.UtcFromMillis(_esperSvc.EPRuntime.CurrentTime);

返回正确的日期。

于 2017-09-17T18:44:24.520 回答