3 votes

c# date sérialisée JSON vers ruby

J'ai une application C# qui sérialise ses DTO en JSON et les envoie par câble pour être traités par Ruby. Le format de la date sérialisée est le suivant :

/Date(1250170550493+0100)/

Dans l'application Ruby, je dois convertir la représentation de cette chaîne en une date/heure/temps (quel que soit le terme utilisé en Ruby). Avez-vous une idée de la façon dont je pourrais procéder ?

Santé, Chris.

4voto

p11y Points 14785

Vous pouvez utiliser Time.strptime pour l'analyser en un Time avec le bon fuseau horaire :

Time.strptime(string, "/Date(%Q%z)/")

Par exemple :

string = "/Date(1250170550493+0100)/"
Time.strptime(string, "/Date(%Q%z)/")
#=> 2009-08-13 14:35:50 +0100

3voto

orip Points 28225

On pourrait analyser les millisecondes depuis l'époque, quelque chose comme ça :

def parse_date(datestring)
  seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
  return Time.at(seconds_since_epoch)
end

parse_date('/Date(1250170550493+0100)/')

Vous devrez toujours gérer les informations relatives au fuseau horaire (l'option +0100 ), il s'agit donc d'un point de départ.

3voto

James Newton-King Points 13880

Vous pourriez utiliser Json.NET pour sérialiser vos DTO au lieu du sérialiseur JSON intégré à .NET. Il vous offre une certaine souplesse quant à la manière de sérialiser les dates (par exemple, en tant que constructeur, format ISO, etc.).

2voto

Rene Points 21

.NET sérialise en millisecondes à partir de l'époque, vous devez donc diviser la partie avant le fuseau horaire par 1000. Sinon, vos dates seront décalées de plusieurs milliers d'années.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X