2016-08-26 4 views
-2

Ich versuche, Datum und Uhrzeit entsprechend dem Zeitformat des Benutzers auf dem lokalen Computer in meiner Anwendung anzuzeigen. Wenn der lokale Computer beispielsweise die Uhrzeit im 24-Stunden-Format anzeigt, sollte die Anwendung die Uhrzeit im 24-Stunden-Format anzeigen. Wenn es 12-Stunden-Format ist, sollte die Anwendung es im 12-Stunden-Format anzeigen. Ich möchte die folgenden Einstellungen im Code abrufen und Datum und Uhrzeit entsprechend anzeigen.Holen Sie sich das Computerzeitformat in C#

Local computer clock settings

Bestehende Code meiner Anwendung verwendet DateTime.UtcNow und ich soll es nicht DateTime.Now zu verwenden, ändern

`public static DateTime FormatTime() 
    { 
     return DateTime.UtcNow.ToLocalTime(); 
    }` 

Es zeigt die Zeit in 12 Stunden-Format unabhängig von Zeitformat des Computers. Gibt es eine Möglichkeit, Benutzer Computer Zeitformat zu bekommen?

+2

Was haben Sie versucht? Dies ist kein Codierungsdienst, bitte lesen Sie http://stackoverflow.com/help/how-to-ask Bearbeiten Sie die Frage mit dem spezifischen Problem, auf das Sie stoßen – Esko

+0

Was Sie scheinen zu fragen, ist nicht "Computer-Zeitformat", sondern die Zeitformat des aktuellen Benutzers auf dem lokalen Computer. –

+0

Sie sollten die Antworten finden, die Sie hier brauchen. https://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29.aspx BTW, ist in der Regel viel besser erhalten hier, wenn Sie ein wenig über das Thema suchen und etwas vor versuchen eine Frage stellen Wir sind nicht hier, um den Code, den Sie brauchen, einfach so zu geben. Wir sind hier, um Ihnen zu helfen, Ihren Code zu reparieren, falls er nicht funktioniert. Das nächste Mal, suchen Sie ein wenig auf Google, versuchen Sie etwas von dem, was Sie finden, und wenn es nicht funktioniert, kommen Sie hier und veröffentlichen Sie den Code Sie haben eine gute und eine gute Erklärung des Problems, und die Leute werden glücklich sein, zu helfen. –

Antwort

2

Das ist nicht nötig. Ihre Anwendung wird dies bereits tun, wenn Sie sie richtig lokalisieren.

Wenn Sie ein DateTime, wird so etwas wie

textBox1.Text = dateTime.ToShortDateString(); 

tun bereits arbeiten. Dasselbe gilt für das Parsen von Daten/Zeiten. Es empfiehlt sich, den MSDN zum Lokalisieren und Globalisieren von .NET-Anwendungen zu lesen. Du würdest erstaunt sein, wie viel schon für dich getan wird. Sie nicht neu erfinden das Rad ...

0

Bei der Verwendung von DateTime.ToString immer das Standard-Format Strings (zB "d" für Short Date) anstelle des benutzerdefinierten Format Strings (zB "yyyy-MM-did") und immer explizit angeben CultureInfo.CurrentCulture für die IFormatProvider Parameter Stellen Sie sicher, dass Ihre Absicht jedem klar ist, der Ihren Code liest.

0

Das Format für den aktuellen Benutzer kann unter Verwendung der DateTimeFormat-Eigenschaft eines CultureInfo Objekts gelesen werden, das folgendermaßen definiert ist: here.

var iDateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat; 
0
DateTime date = DateTime.Now; 
//formatted using the ShortDatePattern 
Console.WriteLine(date.ToString("d"), CultureInfo.InstalledUICulture); 

CultureInfo.InstalledUICulture ist die Betriebssystemsprache

+0

würde ich dagegen empfehlen. Sie sollten sich auf die Benutzeroberflächenkultur des aktuellen Threads verlassen.Dies entspricht standardmäßig der Betriebssystemkultur, kann jedoch auch geändert werden, wenn Sie beispielsweise mehrere Sprachen und Kulturen in Ihrer Anwendung unterstützen möchten, aus denen der Benutzer auswählen kann. –

+0

@ThorstenDittmar Sie haben absolut Recht, aber der Typ fragt nach dem Betriebssystemkontext und nicht nach dem App-Kontext, aber das macht mehr Sinn, wenn die Kultur auf der App (als Standard-Betriebssystemkultur) eingestellt ist oder die eine festgelegt/ausgewählt wird der Benutzer irgendwann. – SilentTremor

0

ich in meiner Anwendung versucht, und hier werden standardmäßig nur sie nimmt nach Systemdatum Zeitformat. Wenn ich die Systemzeit ändere, ändert sich auch die Anwendungszeit automatisch. Ich habe versucht, in Windows-Anwendung mit Datetime-Steuerelement. Was und wie geht es dir?

+0

Existierender Code meiner Anwendung verwendet DateTime.UtcNow und ich sollte es nicht ändern, um DateTime.Now zu verwenden 'public static DateTime FormatTime() { Rückgabe DateTime.UtcNow.ToLocalTime(); } ' Es zeigt die Uhrzeit im 12-Stunden-Format an, unabhängig vom Zeitformat des Computers. – user4639144