webentwicklung-frage-antwort-db.com.de

Holen Sie sich das aktuelle Datum und die Uhrzeit vom Server und konvertieren Sie es in die Ortszeit in c #

Hilfe: Ich habe einen Server, der Zeit in GMT-07.00 Uhr hat. Meine Ortszeit ist GMT + 05.30 Uhr. Ich muss das aktuelle Datum und die aktuelle Uhrzeit vom Server abrufen und dieses Datum und diese Uhrzeit in meine Ortszeit umrechnen. Ich habe viele Codes ausprobiert, aber immer noch keinen sukzessiven Weg gefunden, dies zu tun. Kann mir bitte jemand helfen?.

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

Ich habe alle oben genannten Methoden ausprobiert, trotzdem erhalte ich nicht die richtige Antwort. Angenommen, meine aktuelle Ortszeit ist der 09. März 2014, 12:51:00 Uhr. Dann würde meine Serverzeit 12,30 Stunden von meiner Ortszeit abweichen, dh 12 Stunden und 30 Minuten von meiner Ortszeit abziehen, um meine Serverzeit zu erhalten. Ich muss meine Ortszeit von der Serverzeit abrufen. Wie kann es erreicht werden? Bitte schlagen Sie mir einige Lösungen vor. Vielen Dank im Voraus für Ihre Antworten

5
njnjnj

die Server-Zeitzone muss nicht bekannt sein. Wenn die Einstellung für die Serverzeit korrekt ist, können Sie Folgendes versuchen:

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

um es lokal zu überprüfen, ändern Sie die Zeitzone Ihres Computers entsprechend Ihrem Server. Führen Sie dann den Code aus. Ich überprüfe und es funktioniert gut.

Update:

die ersten beiden Zeilen können wie folgt zu einer Zeile gemischt werden. das hat eine bessere Leistung:

DateTime utcTime = DateTime.UtcNow;
9

wenn Sie Ihre Serverzeit um 12 Stunden und 30 Minuten verlängern möchten, um die gleiche Ortszeit zu erhalten (vorausgesetzt, Sie haben Serverzeit), können Sie die Funktionen AddHours() und AddMinutes() verwenden, um die 12:30 Stunden zu verlängern

Versuche dies:

DateTime dt= /*your server time*/;
dt=dt.AddHours(12);
dt=dt.AddMinutes(30);
1

Wenn die Uhr Ihres Servers korrekt eingestellt ist (unabhängig von der Zeitzone), sind die ersten drei Zeilen Ihres eigenen Codes genau richtig. Die Variable result enthält die Ortszeit in der indischen Zeitzone.

Lass einfach die letzten beiden Zeilen weg.

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

Sie haben also die Zeit des Servers und kennen die Zeitzone des Servers? Dann können Sie die Ortszeit wie folgt abrufen:

//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

Der einfachste Weg, um das UTC-Datum und die UTC-Uhrzeit des Servers zu ermitteln, ist (SELECT GETUTCDATE ();). Versuch es.

0
Hashim Shubber