2017-01-20 14 views
-1

Ich habe eine DateTime Zeichenfolge und ich weiß, in welcher Zeitzone es formatiert ist, aber ohne Zeitzone Informationen in dieser Zeichenfolge.Konvertieren DateTime Zeichenfolge in bestimmte Zeitzone DateTime in C#

Beispiel: 2017-01-19 23:53:57

Jetzt wird diese Zeichenfolge in Server umgewandelt werden, die in einer anderen Zeitzone und ich kann nicht die Zeitzone des Servers ändern.

Wenn ich DateTime.Parse("2017-01-19 23:53:57") verwende, erhalte ich DateTime der TimeZone-Konfiguration des Servers.

Dies ist meine Webanwendung und Server kann in verschiedenen Zeitzonen sein.

Ich möchte nicht Bangladesch Zeit in UTC konvertieren. Ich möchte nur konvertieren DateTime Zeichenfolge, die Bangladesch Zeitzone Format zu DateTime Objekt auch in Bangladesch Zeitzone Format.

+1

Hoffnung [Konvertieren von Zeiten zwischen den Zeitzonen] (https://msdn.microsoft.com/en-us/library/bb397769 (v = vs.110) .aspx) Sie könnten –

+0

helfen Wenn Sie wissen, dass Ihre 'DateTime' wird in mehreren Ländereinstellungen verwendet. Sie sollten' DateTime.UtcNow' wann immer möglich verwenden und die Konvertierung in die lokale Zeit nur auf dem Computer des Endbenutzers durchführen, wenn dies erforderlich ist. – Abion47

+1

Besser noch, verwenden Sie DateTimeInfo, so dass Sie zwischen Offsets überhaupt nicht konvertieren müssen –

Antwort

-2

Sie können 2017-01-19 23:53:57 Format Zeichenfolge zu Datetime über unten Methode konvertieren.

DateTime DateConverter(string date) 
    { 
     string[] dateAndTimes= date.Split(' '); 
     string[] dateParts = dateAndTimes[0].Split('-'); 
     string convertableString = dateParts[2] + "/" + dateParts[1] + "/" + dateParts[0] + " " + dateAndTimes[1]; 
     return Convert.ToDateTime(convertableString); 
    } 
+0

Zunächst kann dieses Format direkt mit 'DateTime.Parse' geparst werden. Außerdem kann 'DateTime.ParseExact' jedes Format verarbeiten. Zweitens geht es in der Frage nicht um Parsing. Es geht darum, zwischen Zeitzonen zu konvertieren. –

2

Dies sollte Ihre Arbeit tun, da Sie explizit wissen, dass die Zeitzone der Quelle in Bagladesh ist.

var time = DateTime.Parse("2017-01-19 23:53:57"); 
var clientZone = TimeZoneInfo.FindSystemTimeZoneById("Bangladesh Standard Time"); 
var utcTime = TimeZoneInfo.ConvertTimeToUtc(time, clientZone); 
+0

wow, es funktioniert, ich habe es in einem meiner Server getestet. Aber ich habe nicht verstanden, warum das funktioniert. Weil in dieser Zeile 'var time = DateTime.Parse (" 2017-01-19 23:53:57 "); ' Die Zeit sollte mit der TimeZone-Konfiguration der Maschine konvertiert werden. Dann versucht es das 'Bangladesh Standard Time'-Format zu konvertieren, was meiner Meinung nach falsch sein sollte. – Moshii

+0

var time = DateTime.Parse ("2017-01-19 23:53:57"); Ihr Server analysiert seine lokale Zeitzone, aber Er weiß das :). –

+0

@Moshii - Dies konvertiert * von * Bangladesch Zeit in UTC. Ist es das was du wolltest? In deiner Frage hast du nicht gesagt, ob es von * etwas * nach Bangladesh oder von Bangladesh zu * etwas * war, und du hast auch nicht gesagt, was das * etwas * war. –

Verwandte Themen