0
votes

Comment analyser la date du fichier et ajouter des informations sur le fuseau horaire

J'ai besoin d'analyser un fichier contenant des horodatages tels que: "09.06.2019 00:00:00". La personne qui fournit ces fichiers m'a dit que ces horodatages sont dans le fuseau horaire "CET" qui est UTC + 1 (pas de DST). Comment puis-je analyser les horodatages dans des objets DateTime correspondants? La seule solution possible qui me vint à l'esprit jusqu'à présent est de les analyser comme si elles étaient UTC, puis ajoutez-la manuellement 1 heure à l'objet DateTime, mais est-ce vraiment une bonne solime?

Merci beaucoup à l'avance!


5 commentaires

À quoi ressemblent ces fichiers? Qu'avez-vous essayé de résoudre ce problème?


Est-il garanti qu'il n'y aura pas de dst?


Stackoverflow.com/Questtions/5615538/...


@RoadRunner Les fichiers sont des fichiers CSV contenant des horodatages dans la première colonne et des mesures (valeurs de point flottant) dans les colonnes suivantes où chaque colonne représente un point de mesure. Jusqu'à présent, j'ai essayé d'utiliser denttime.parseexact () avec le format "g" et la culture "de" mais cela ne fonctionne pas à cause de la DST.


@Salmana je ne sais pas. Les informations que j'ai obtenues étaient que le fuseau horaire utilisé est "CET" pendant toute l'année et si cela est vrai, il n'y aura pas de DST. Je vais simplement supposer que pour le moment.


3 Réponses :


0
votes

Vous pouvez utiliser:

DateTime dateTime = new DateTime(2010, 1, 1, 0, 1, 0,DateTimeKind.Unspecified);
dateTime=TimeZoneInfo.ConvertTimeToUtc(dateTime, 
    TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time"));


0 commentaires

1
votes

Faites votre futur auto-autonome, et utilisez DateTimeOffset (au lieu de DateTime ) lors de la gestion des fuseaux horaires.

Microsoft a Un article entier Expliquer les différentes structures liées à la date / heure.

jusqu'à l'analyse de TimeZoneOffset , il y a quelques façons différentes, mais le plus simple est d'utiliser parseexact () ou TrySeSeexact () . xxx


1 commentaires

Merci, c'est exactement ce dont j'avais besoin!



2
votes

Utiliser DateTimeOffset code> avec TimezoneInfo code> Pour convertir la chaîne de date dans un DateTimeOffset code> avec le décalage de l'heure européenne centrale.

string dateString = "09.06.2019 00:00:00";
// get timezone for Central European Time
TimeZoneInfo cet = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
// parse to local DateTimeOffset
var localDateTime = DateTimeOffset.ParseExact(dateString, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);
// get the UTC Offset value
var utcOffset = cet.GetUtcOffset(localDateTime.DateTime);
// convert to DateTimeOffset with CET timezone offset
var dateTimeWithTimeZone = new DateTimeOffset(localDateTime.DateTime, utcOffset);

// result dateTimeWithTimeZone.ToString()
// 12/09/2019 00:00:00 +01:00


0 commentaires