2009-10-16 7 views
0

J'ai quelques points de données qui incluent le décalage de gmt (en secondes). Je voudrais envoyer un message via une socket à minuit. Envoyer le message n'est pas un problème, j'ai juste du mal à déterminer l'heure en fonction du décalage..Net Envoyer un message à minuit en fonction de TimeZone?

Quelqu'un a des suggestions pour cela?

Répondre

1

Depuis UTC et GMT sont les mêmes que vous pouvez utiliser ce code.

int secondsOffset = 100; 
    DateTime utcMidnight = DateTime.SpecifyKind(DateTime.Today, DateTimeKind.Utc); 

DateTime utcWithOffset = utcMidnight.AddSeconds(secondsOffset); 

Console.WriteLine("Offset on UTC: " + utcWithOffset); 
Console.WriteLine("Offset on local time: " + utcWithOffset.ToLocalTime()); 

Le premier WriteLine affiche l'heure au fuseau horaire UTC. La seconde écriture indique l'heure au fuseau horaire local. La partie la plus délicate peut être de savoir quelle est l'heure de base, était-ce aujourd'hui à minuit ou hier à minuit?

1

Si vous essayez d'obtenir un temps courant donné un décalage en quelques secondes, vous pouvez faire:

TimeSpan offset = TimeSpan.FromSeconds(offsetInSecondsFromMidnight); 

DateTime initial = DateTime.Now.Date; // Midnight, today - for time, the date doesn't really matter, but we want midnight 

DateTime timeWithOffset = initial + offset; // This will have the correct time of day now