Re: Finding the offset of a specific time zone
Eddie Lascu <[email protected]> Wed, 25 Mar 2009 12:59:02 -0400
| Newsgroups | gmane.comp.windows.devel.dotnet.advanced |
|---|---|
| Organization | IBI Group |
| Message-ID | <[email protected]> |
Peter, Everything you said, I already figured it out and it's not helping me. Again, a time stamp coming from the field device belongs to a different time zone, so using "ToUniversalTime" will give me the wrong result because "ToUniversalTime" assumes the time is local which is not the case. I explained that the field devices and the server that runs my application are in different time zones. On the other hand, I found a class that mimics what TimeZoneInfo does in .NET 3.5. Incidentally, it is also called TimeZoneInfo. You can get it here: http://www.codeproject.com/KB/vb/TimeZoneInfo.aspx With that, I can instantiate an object of type TimeZoneInfo for Pacific Time (this would be the only parameter that I need to keep in my configuration file: the name of the time zone where the field devices are located). Having that object (which is built based on available time zone information from the subkeys of the registry's HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones key), I can ask what is the Current Time Offset and that is the offset I need to add to the values that come from the field devices in order to obtain the correct UTC. Thank you everyone for pitching in with your ideas. Regards, Eddie -----Original Message----- From: Discussion of advanced .NET topics. [mailto:[email protected]] On Behalf Of Peter Ritchie Sent: Wednesday, March 25, 2009 12:44 PM To: [email protected] Subject: Re: [ADVANCED-DOTNET] Finding the offset of a specific time zone You can use DateTime.UtcNow to get the current time in UTC. e.g.: DateTime utcDate = DateTime.UtcNow; You can use DateTime.ToUniversalTime() to convert a local time to UTC. e.g.: DateTime date = new DateTime(1968, 11, 05, 12,0,0); DateTime utcDate = date.ToUniversalTime(); You can change the type of a date from local to UTC with the SpecifyKind method (i.e. you get a DateTime object from a database; but it's default kind is local and its value is actually UTC) e.g: DateTime dateTime = GetRecordDateFromDatabase(id); dateTime = dateTime.SpecifyKind(DateTimeKind.Utc); You can convert a UTC time to local time with DateTime.ToLocalTime. E.g.: DateTime utcDate = GetUtcDateFromSomewhere(); DateTime localDate = utcDate .ToLocalTime(); -- Peter =================================== View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives =================================== View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives