web-dev-qa-db-fra.com

Obtenir la date actuelle du serveur et la convertir en heure locale en c #

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

5
njnjnj

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;
9

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

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.

0
Matt Johnson
 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
0
Sudarshan Kate

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
0
Sphinxxx

La méthode la plus simple pour obtenir la date et l'heure UTC du serveur est (SELECT GETUTCDATE ();). L'essayer.

0
Hashim Shubber