vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows · Computer/Benutzer/Ländereinstellungen   |   VB-Versionen: VB5, VB603.10.05
Datum/Zeitformat im System ändern

Hier wird gezeigt, wie man das im System festgelegte Datum- und Zeitformat aus seiner VB-Anwendung heraus ändern kann.

Autor:   Dieter OtterBewertung:  Views:  14.375 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Nachfolgender Tipp zeigt, wie man das im System festgelegte Datum- und Zeitformat aus der eigenen Anwendung heraus ändern kann.

Die Funktion SetNewTimeFormat erwartet im ersten Parameter das neue Datumformat. Optional kann als zweiter Parameter noch das neue Uhrzeitformat angegeben werden. Der dritte optionale Parameter legt fest, ob die Änderungen systemweit für alle Benutzer durchgeführt werden soll oder nur für den aktuell angemeldeten Benutzer.

Fügen Sie nachfolgenden Code in ein Modul ein.

' Benötigte API-Deklarationen
Private Declare Function SetLocaleInfo Lib "kernel32" _
  Alias "SetLocaleInfoA" ( _
  ByVal Locale As Long, _
  ByVal LCType As Long, _
  ByVal lpLCData As String) As Long
 
Private Declare Function PostMessage Lib "user32" _
  Alias "PostMessageA" ( _
  ByVal hwnd As Long, _
  ByVal wMsg As Long, _
  ByVal wParam As Long, _
  ByVal lParam As Long) As Long
 
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
 
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
 
Private Const LOCALE_SSHORTDATE = &H1F
Private Const LOCALE_STIMEFORMAT = &H1003
Private Const WM_SETTINGCHANGE = &H1A
Private Const HWND_BROADCAST = &HFFFF&
Public Function SetNewTimeFormat(ByVal sDateFormat As String, _
  Optional ByVal sTimeFormat As String = "", _
  Optional ByVal bAllUser As Boolean = True) As Boolean
 
  Dim nLCID As Long
  Dim bResult As Boolean
 
  If bAllUser Then  
    ' systemweite Änderung für alle Benutzer
    nLCID = GetSystemDefaultLCID()
  Else
    ' Änderung nur für den aktuell angemeldeten Benutzer
    nLCID = GetUserDefaultLCID()
  End If
 
  ' Sicherstellen, dass für sDateFormat die korrekte benötigte 
  ' Groß-/Kleinschreibung festgelegt ist
  sDateFormat = Replace(sDateFormat, "D", "d")  ' Tag "d" immer klein
  sDateFormat = Replace(sDateFormat, "m", "M")  ' Monat "M" immer groß
  sDateFormat = Replace(sDateFormat, "Y", "y")  ' Jahr "y" immer klein
 
  ' Neues Datumformat setzen
  bResult = (SetLocaleInfo(nLCID, LOCALE_SSHORTDATE, sDateFormat) <> 0)
  If bResult Then
    ' System über die Änderung benachrichtigen
    PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
  End If
 
  If bResult And Len(sTimeFormat) > 0 Then
    ' Sicherstellen, dass für sTimeFormat die korrekte benötigte 
    ' Groß-/Kleinschreibung festgelegt ist
    sDateFormat = Replace(sDateFormat, "h", "H")  ' Stunde "H" immer groß
    sDateFormat = Replace(sDateFormat, "M", "m")  ' Minute "m" immer klein
    sDateFormat = Replace(sDateFormat, "S", "s")  ' Sekunde "s" immer klein
 
    ' Neues Zeitfroamt setzen
    bResult = (SetLocaleInfo(nLCID, LOCALE_STIMEFORMAT, sTimeFormat) <> 0)
    If bResult Then
      ' System über die Änderung benachrichtigen
      PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
    End If
  End If
 
  SetNewTimeFormat = bResult
End Function

War der Funktionsaufruf erfolgreich, wird als Rückgabewert TRUE zurückgegeben, andernfalls FALSE.

Beispiel für den Aufruf:

' Neues Datumformat für alle User setzen
SetNewTimeFormat "dd.MM.yyyy"
' Datum- und Uhrzeitformat für aktuellen User setzen
SetNewTimeFormat "dd.MM.yyyy", "HH:mm:ss", False



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.