2010-06-29 5 views
0

J'ai trouvé un extrait de code sur le forum. Quand j'ai commencé à l'apprendre. J'ai trouvé la sortie très étrange.Get & Set l'heure du système en C#

Pourquoi le code ne peut-il pas fonctionner correctement?

Je passe toujours 8 heures lorsque j'exécute le code ci-dessous.

VS2005 et WinXP utilisés.Merci.

class Tester 
    { 
     [System.Runtime.InteropServices.DllImport("kernel32", SetLastError = 
     true)] 
     private static extern bool GetSystemTime(out SYSTEMTIME systemTime); 
     [System.Runtime.InteropServices.DllImport("kernel32", SetLastError = 
     true)] 
     private static extern bool SetSystemTime(ref SYSTEMTIME systemTime); 
     struct SYSTEMTIME 
     { 
      internal short wYear; 
      internal short wMonth; 
      internal short wDayOfWeek; 
      internal short wDay; 
      internal short wHour; 
      internal short wMinute; 
      internal short wSecond; 
      internal short wMilliseconds; 
     } 
     static void Main() 
     { 
      SYSTEMTIME st; 
      if (GetSystemTime(out st)) 
      { 
       st.wHour = 2; // new system time was set to nearby 10:00 AM, 2 + 8 
       // If i replace the line with below one. 
       // st.wHour = 18; // new system time was set to nearby 2:00 AM next day, 18 + 8 = 26, 26 - 24. go to next day! 
       if (SetSystemTime(ref st)) 
        Console.WriteLine("success"); 
       else 
        Console.WriteLine(System.Runtime.InteropServices.Marshal.GetLastWin32Error()); 
      } 
      else 
       Console.WriteLine("GetSystemTime failed: {0}", 
       System.Runtime.InteropServices.Marshal.GetLastWin32Error()); 
     } 
    } 

Répondre

1

GetSystemTime Function

Récupère la date actuelle du système et le temps. L'heure système est exprimée en temps universel coordonné (UTC).

Pour récupérer la date actuelle du système et l'heure à l'heure locale, utilisez la fonction GetLocalTime

Questions connexes