Click here to Skip to main content
15,885,546 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
C#
public DateTime timezone()
      {

          string date = "2009-02-25 16:13:00Z";
          // Local .NET timeZone.
          DateTime localDateTime = DateTime.Parse(date);
          DateTime utcDateTime = localDateTime.ToUniversalTime();

          // ID from: 
          // "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zone"
          // See http://msdn.microsoft.com/en-us/library/system.timezoneinfo.id.aspx
          string ukTimeZoneKey = "British Summer Time";
          TimeZoneInfo ukTimeZone = TimeZoneInfo.FindSystemTimeZoneById(ukTimeZoneKey);
          DateTime ukDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, ukTimeZone );

          return ukDateTime ;


      }



this will not work bcz sometimes it is in British Summer Time and sometimes it is in Greenwich Mean Time and i didn't have registry in my pc of
Greenwich Mean Time and British Summer Time


Time Changes in London over the years

Daylight Saving Time (DST) changes do not necessarily occur on the same date every year.

Time zone changes for:
Year Date & Time Abbreviation Time Change
2013 Sun, 31 Mar, 01:00 GMT → BST +1 hour (DST start)
Sun, 27 Oct, 02:00 BST → GMT -1 hour (DST end)
2014 Sun, 30 Mar, 01:00 GMT → BST +1 hour (DST start)
Sun, 26 Oct, 02:00 BST → GMT -1 hour (DST end)
2015 Sun, 29 Mar, 01:00 GMT → BST +1 hour (DST start)
Sun, 25 Oct, 02:00 BST → GMT -1 hour (DST end)
2016 Sun, 27 Mar, 01:00 GMT → BST +1 hour (DST start)
Sun, 30 Oct, 02:00 BST → GMT -1 hour (DST end)
2017 Sun, 26 Mar, 01:00 GMT → BST +1 hour (DST start)
Sun, 29 Oct, 02:00 BST → GMT -1 hour (DST end)





http://www.timeanddate.com/time/zone/uk/london[^] this contains time xone changes

pls help me out
Posted
Updated 15-Sep-14 3:17am
v2

Changes from GMT to BST and back occur at fixed points in the calendar, last Sundays of March and October. The rules for converting are set in every computer of every operating system. You get the correct time for any time of the year just by requesting the time in local format. You can adjust the timezone required by setting environment variables, and using the standard libraries to do the conversion. If you want to do it manually then you need to unsderstand the structure of the registry entries for timezones as follows:

Retrieving Time-Zone Information

Article ID: Q115231  
The information in this article applies to: 
Microsoft Win32 Application Programming Interface (API) included with: 


    - Microsoft Windows NT versions 3.1, 3.5, and 3.51
    - Microsoft Windows 95 version 4.0


In Windows NT, version 3.1, the time-zone strings are compiled into a resource that is linked into the CONTROL.EXE file. For Windows NT, version 3.5 and later and Windows 95, the time-zone strings have been moved into the registry. 

In Windows NT, the time-zone strings are located in the key: 


   HKEY_LOCAL_MACHINE\SOFTWARE\
      Microsoft\
      Windows NT\
      CurrentVersion\
      Time Zones.


In Windows 95, the time-zone strings are located in the key: 

   HKEY_LOCAL_MACHINE\SOFTWARE\
      Microsoft\
      Windows\
      CurrentVersion\
      Time Zones.


For each time zone, the registry key TZI is formatted as follows: 

   LONG       Bias;
   LONG       StandardBias;
   LONG       DaylightBias;
   SYSTEMTIME StandardDate;
   SYSTEMTIME DaylightDate;


You can use this information to fill out a TIME_ZONE_INFORMATION 
structure, which is used when calling SetTimeZoneInformation(). 
 
0xffffffc4
00000000
0xffffffc4
Year Month dow  day  hour min  sec  msec
0000 000A 0000 0005 0003 0000 0000 0000

0000 0003 0000 0005 0002 0000 0000 0000


--------------------------------------------------------------------------------

 

TIME_ZONE_INFORMATION
The TIME_ZONE_INFORMATION structure specifies information 
specific to the time zone. 

typedef struct _TIME_ZONE_INFORMATION { // tzi 
    LONG       Bias; 
    WCHAR      StandardName[ 32 ]; 
    SYSTEMTIME StandardDate; 
    LONG       StandardBias; 
    WCHAR      DaylightName[ 32 ]; 
    SYSTEMTIME DaylightDate; 
    LONG       DaylightBias; 
} TIME_ZONE_INFORMATION; 
 
Members

Bias 
	Specifies the current bias, in minutes, for local time 
	translation	on this computer. The bias is the difference, in 
	minutes, between Coordinated Universal Time (UTC) and local 
	time. All translations between UTC and local time are based on 
	the following formula: 

		UTC = local time + bias 
 
This member is required. 

StandardName 
	Specifies a null-terminated string associated with standard 
	time on this operating system. For example, this parameter 
	could contain "EST" to indicate Eastern Standard Time. This 
	string is not used by the operating system, so anything stored 
	there by using the SetTimeZoneInformation function is returned 
	unchanged by the GetTimeZoneInformation function. This string 
	can be empty. 

StandardDate 
	Specifies a SYSTEMTIME structure that contains a date and local 
	time when the transition from daylight time to standard time 
	occurs on this operating system. If this date is not specified, 
	the wMonth member in the SYSTEMTIME structure must be zero. If 
	this date is specified, the DaylightDate value in the 
	TIME_ZONE_INFORMATION structure must also be specified. 
	This member supports two date formats. Absolute format 
	specifies an exact date and time when standard time begins. In 
	this form, the wYear, wMonth, wDay, wHour, wMinute, wSecond, 
	and wMilliseconds members of the SYSTEMTIME structure are used 
	to specify an exact date. 

	Day-in-month format is specified by setting the wYear member 
	to zero, setting the wDayOfWeek member to an appropriate 
	weekday, and using a wDay value in the range 1 through 5 to 
	select the correct day in the month. Using this notation, the 
	first Sunday in April can be specified, as can the last 
	Thursday in October (5 is equal to "the last"). 

StandardBias 
	Specifies a bias value to be used during local time 
	translations that occur during standard time. This member is 
	ignored if a value for the StandardDate member is not supplied.
	This value is added to the value of the Bias member to form 
	the bias used during standard time. In most time zones, the 
	value of this member is zero. 

DaylightName 
	Specifies a null-terminated string associated with daylight 
	time on this operating system. For example, this parameter 
	could contain "PDT" to indicate Pacific Daylight Time. This 
	string is not used by the operating system, so anything stored 
	there by using the SetTimeZoneInformation function is returned 
	unchanged by the GetTimeZoneInformation function. This string 
	can be empty. 

DaylightDate 
	Specifies a SYSTEMTIME structure that contains a date and 
	local time when the transition from standard time to daylight 
	time occurs on this operating system. If this date is not 
	specified, the wMonth member in the SYSTEMTIME structure must 
	be zero. If this date is specified, the StandardDate value in 
	the TIME_ZONE_INFORMATION structure must also be specified. 
	This member supports the absolute and day-in-month time formats 
	described for the StandardDate member. 

DaylightBias 
	Specifies a bias value to be used during local time translations 
	that occur during daylight time. This member is ignored if a 
	value for the DaylightDate member is not supplied. 
	This value is added to the value of the Bias member to form the 
	bias used during daylight time. In most time zones, the value of 
	this member is – 60. 


See Also
	Time Overview, 
	Time Structures, 
	GetTimeZoneInformation, 
	SetTimeZoneInformation, 
	SYSTEMTIME 
 
Share this answer
 
The time zone ID you need to use is: GMT Standard Time

The TimeZoneInfo class[^] should automatically handle daylight saving time, so you don't need to worry about getting different time-zones for different dates.
C#
string date = "2009-07-25 16:13:00Z";
DateTime localDateTime = DateTime.Parse(date);
DateTime utcDateTime = localDateTime.ToUniversalTime();
 
string ukTimeZoneKey = "GMT Standard Time";
TimeZoneInfo ukTimeZone = TimeZoneInfo.FindSystemTimeZoneById(ukTimeZoneKey);
DateTime ukDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, ukTimeZone);


Since you're working with dates in multiple time-zones, it would probably be better to use the DateTimeOffset class[^] instead of the DateTime class.
C#
string date = "2009-07-25 16:13:00Z";
DateTimeOffset localDateTime = DateTimeOffset.Parse(date);
 
string ukTimeZoneKey = "GMT Standard Time";
TimeZoneInfo ukTimeZone = TimeZoneInfo.FindSystemTimeZoneById(ukTimeZoneKey);
DateTimeOffset ukDateTime = TimeZoneInfo.ConvertTime(localDateTime, ukTimeZone);
 
Share this answer
 
Comments
Member 10047413 8-Oct-14 5:27am    
thank u guys sorry for let reply i m working on another functions

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900