Get current date time from server and convert it into local time in c#

前端 未结 6 648
一生所求
一生所求 2021-02-04 14:51

Help: I have a server which is having time in GMT-07.00 hours. My local time is GMT+05.30 hours. I need to get current date and time from server and convert this date and time i

相关标签:
6条回答
  • 2021-02-04 15:20

    no need to know server time zone. if the server time setting is correct you can try this :

    DateTime serverTime = DateTime.Now; // gives you current Time in server timeZone
    DateTime utcTime = serverTime.ToUniversalTime(); // convert it to Utc using timezone setting of server computer
    
    TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
    DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, tzi); // convert from utc to local
    

    to check it locally , change your computer timezone to match your server. then run the code. I check and it's working fine.

    update:

    the first two lines can be mixed into one line as below . that has a better performance :

    DateTime utcTime = DateTime.UtcNow;
    
    0 讨论(0)
  • 2021-02-04 15:25
     DateTime serverTime = DateTime.Now;
    
     DateTime utcTime = serverTime.ToUniversalTime(); 
    
    // convert it to Utc using timezone setting of server computer
    
     TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
    
     DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, tzi); 
    
    // convert from utc to local
    
    0 讨论(0)
  • 2021-02-04 15:28

    So you have the server's time, and you know the server's time zone? Then you can get the local time like this:

    //Server: 09-Mar-2014 11:00:00 AM:
    var serverTime = new DateTime(2014, 3, 9, 11, 00, 00);
    
    var serverZone = TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time");
    var localZone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
    
    var localTime = TimeZoneInfo.ConvertTime(serverTime, serverZone, localZone);
    // => 09-Mar-2014 11:30:00 PM
    
    0 讨论(0)
  • 2021-02-04 15:38

    If your server's clock is set correctly (regardless of time zone), then the first three lines of your own code are exactly correct. The result variable contains the local time in the India time zone.

    Simply omit the last two lines.

    0 讨论(0)
  • 2021-02-04 15:38

    The simplest way to get the UTC date and time of the server is (SELECT GETUTCDATE();). Try it.

    0 讨论(0)
  • 2021-02-04 15:41

    if you want to add 12 Hours and 30 minutes to your Server time to get equavalent localtime(assuming you have server time), you can use AddHours() and AddMinutes() functions to add the 12:30 hours

    Try This:

    DateTime dt= /*your server time*/;
    dt=dt.AddHours(12);
    dt=dt.AddMinutes(30);
    
    0 讨论(0)
提交回复
热议问题