code_junkie

.NET DateTime.Now returns incorrect time when time zone is changed

Nov 12th, 2011
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. Private mTZChangeFilter As WindowsMessageFilter
  2.  
  3.  
  4. mTZChangeFilter = New WindowsMessageFilter()
  5. AddHandler mTZChangeFilter.TimeChanged, AddressOf onTimeChanged
  6.  
  7. Application.RemoveMessageFilter(mTZChangeFilter)
  8.  
  9.  
  10. Public Class WindowsMessageFilter
  11. Implements IMessageFilter
  12.  
  13. <System.Diagnostics.DebuggerStepThrough()> _
  14. Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
  15. ' Debug.Print(m.Msg.ToString)
  16. If m.Msg = 30 Then
  17. ResetTimeZone()
  18. RaiseEvent TimeChanged(Me)
  19. End If
  20. End Function
  21.  
  22. Private Sub ResetTimeZone()
  23. Dim tz As Type = GetType(System.TimeZone)
  24. Dim mth As System.Reflection.MethodInfo
  25.  
  26. Try
  27. mth = tz.GetMethod("ResetTimeZone", BindingFlags.NonPublic Or BindingFlags.Static)
  28. mth.Invoke(mth, Nothing)
  29. Catch ex As Exception
  30. Debug.Print(ex.ToString)
  31. End Try
  32. End Sub
  33.  
  34. end class
Add Comment
Please, Sign In to add comment