2017-09-17 16 views
0

C#でNesperエンジン(http://www.espertech.com/esper/nesper.php)を使用していますが、問題が発生しています。Nesperエンジン/ 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」関数でしょうか? Nesperを見た後

答えて

0

あなたの助けを

おかげNesper2DateTime 『関数間違っていたのソースコードは、私がように見えます』。これは、Nesperの 'DateTimeHelper.UtcFromMillis'関数を使用するときに機能します。

以下

using com.espertech.esper.compat; 
DateTime engineTime = DateTimeHelper.UtcFromMillis(_esperSvc.EPRuntime.CurrentTime); 
正しい日付を返す