2017-09-17 5 views
0

J'utilise le moteur Nesper (http://www.espertech.com/esper/nesper.php) en C# et je suis confronté à un problème.Nesper engine/C#: problème en heure interne interne

Lorsque vous essayez de récupérer l'heure interne du moteur, la date renvoyée semble être erronée car il s'agit de la date d'hier.

Le code ci-dessous est un exemple factice qui reproduit le problème. D'après ce que je comprends, 'engineTime' et 'DateTime.UtcNow' devraient être égaux, mais ce n'est pas le cas.

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

Le résultat que je reçois dans la console est:

Esper engine time: 16/09/2017 10:30:25 
System utc time:  17/09/2017 10:30:25 

Est-ce le problème vient de Nesper, ou est ma fonction 'Nesper2DateTime' mal?

Merci pour votre aide

Répondre

0

Après avoir regardé Nesper » code source, il semble que ma « fonction » Nesper2DateTime avait tort. Cela fonctionne lors de l'utilisation de la fonction 'DateTimeHelper.UtcFromMillis' de Nesper.

Voici

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

retourne la date correcte.