Aide: J'ai un serveur qui a l'heure GMT-07.00. Mon heure locale est à 05:00 heures. Je dois obtenir la date et l'heure actuelles du serveur et convertir ces dates et heures en heure locale. J'ai essayé beaucoup de codes, mais je n'ai toujours pas trouvé de façon successive de le faire. Quelqu'un peut-il m'aider s'il vous plaît.
string zoneId = "India Standard Time";
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(zoneId);
DateTime result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi);
DateTime cu = result.ToUniversalTime();
DateTime cur = cu.ToLocalTime();
J'ai essayé toutes les méthodes ci-dessus, mais je ne reçois toujours pas la bonne réponse. Supposons que mon heure locale actuelle soit le 09-Mar-2014 12:51:00 PM, mon heure de serveur sera alors différente de 12h30, heure locale, c.-à-d. Soustrayez 12 heures et 30 minutes de mon heure locale pour obtenir l'heure du serveur. Je dois obtenir mon heure locale à partir de l'heure du serveur. Comment peut-il être atteint ?? S'il vous plaît, suggérez-moi des solutions .. Merci d'avance pour vos réponses
pas besoin de connaître le fuseau horaire du serveur. Si le réglage de l'heure du serveur est correct, vous pouvez essayer ceci:
DateTime serverTime = DateTime.Now; // gives you current Time in server timeZone
DateTime utcTime = serverTime.ToUniversalTime(); // convert it to Utc using timezone setting of server computer
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, tzi); // convert from utc to local
pour le vérifier localement, modifiez le fuseau horaire de votre ordinateur en fonction de votre serveur. puis lancez le code. Je vérifie et ça fonctionne bien.
update:
les deux premières lignes peuvent être mélangées dans une ligne comme ci-dessous. qui a une meilleure performance:
DateTime utcTime = DateTime.UtcNow;
si vous souhaitez ajouter 12 heures et 30 minutes à l'heure du serveur pour obtenir une heure locale équivalente (en supposant que vous disposiez d'une heure serveur), vous pouvez utiliser les fonctions AddHours()
et AddMinutes()
pour ajouter les 12h30.
Essaye ça:
DateTime dt= /*your server time*/;
dt=dt.AddHours(12);
dt=dt.AddMinutes(30);
Si l'horloge de votre serveur est réglée correctement (quel que soit le fuseau horaire), les trois premières lignes de votre propre code sont parfaitement correctes. La variable result
contient l'heure locale dans le fuseau horaire indien.
Omettez simplement les deux dernières lignes.
DateTime serverTime = DateTime.Now;
DateTime utcTime = serverTime.ToUniversalTime();
// convert it to Utc using timezone setting of server computer
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, tzi);
// convert from utc to local
Vous avez donc l'heure du serveur et vous connaissez son fuseau horaire? Ensuite, vous pouvez obtenir l'heure locale comme ceci:
//Server: 09-Mar-2014 11:00:00 AM:
var serverTime = new DateTime(2014, 3, 9, 11, 00, 00);
var serverZone = TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time");
var localZone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
var localTime = TimeZoneInfo.ConvertTime(serverTime, serverZone, localZone);
// => 09-Mar-2014 11:30:00 PM
La méthode la plus simple pour obtenir la date et l'heure UTC du serveur est (SELECT GETUTCDATE ();). L'essayer.