C# 3.5 OrderBy with TimeZoneInfo.GetSystemTimeZones()

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • qwedster
    New Member
    • Jul 2008
    • 24

    C# 3.5 OrderBy with TimeZoneInfo.GetSystemTimeZones()

    Guys!

    How to use OrderBy with TimeZoneInfo.Ge tSystemTimeZone s() in C# 3.5 (vide Code snippet 1)?

    However, I got it in VB.NET 9 (vide Code snippet 2)!


    Code snippet 1:
    Code:
    using System;
    
    using System.Collections.Generic;
    
    using System.Linq;
    
    using System.Text;
    
    using System.Collections.ObjectModel;
    
    class Mainclass
    
    {
    
    static void Main(string[] args) 
    {
    
    ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); 
    
    //OrderBy(Func<TimeZoneInfo zone> zone.BaseUtcOffset.TotalHours); //???
    
    foreach (TimeZoneInfo timeZone in timeZones) 
    { 
    
    Console.Write("Offset: {0}", timeZone.BaseUtcOffset.TotalHours); 
    
    Console.Write(" "); 
    Console.Write("Now: {0}", TimeZoneInfo.ConvertTime(DateTime.Now, timeZone).ToString("t"));
    
    Console.Write(" "); Console.WriteLine(timeZone.DisplayName); 
    } 
    
    Console.ReadLine(); 
    }
    
    }
    Code snippet 2:

    Code:
     
    Class MainClass 
    Public Shared Sub Main()
    
    Dim Zones = TimeZoneInfo.GetSystemTimeZones().OrderBy(Function(zone As TimeZoneInfo) zone.BaseUtcOffset.TotalHours) 
    For Each zone In Zones
    
    Console.Write("Offset: {0}", zone.BaseUtcOffset.TotalHours) 
    Console.Write(ControlChars.Tab)
    
    Console.Write("Now: {0}", TimeZoneInfo.ConvertTime(DateTime.Now, zone).ToString("t")) 
    Console.Write(ControlChars.Tab)
    
    Console.WriteLine(zone.DisplayName)
    
    Next
    
    Console.ReadLine()
    
    End Sub 
    End Class
    Thanks
    Last edited by Curtis Rutland; Jul 29 '08, 01:50 PM. Reason: Added Code Tags - Please use the # button
  • r035198x
    MVP
    • Sep 2006
    • 13225

    #2
    What do you want to order them by? The GetSystemTimeZo nes() methods already returns a sorted collection.

    Comment

    • qwedster
      New Member
      • Jul 2008
      • 24

      #3
      Originally posted by r035198x
      What do you want to order them by? The GetSystemTimeZo nes() methods already returns a sorted collection.

      Thanks for the reply!

      I want to the TimeZones in the Order of of BaseUtcOffset (as I haved stated in the VB.NET 9 code - Code snippet 2).

      I am not sure about the corresponding C# 3.5 code, which I guess should be something like,

      TimeZoneInfo.Ge tSystemTimeZone s().OrderBy(Fun c<TimeZoneInfo zone> zone.BaseUtcOff set.TotalHours) ; //???

      Comment

      • r035198x
        MVP
        • Sep 2006
        • 13225

        #4
        Well they already are sorted by that.
        Run
        Code:
        foreach(TimeZoneInfo info in TimeZoneInfo.GetSystemTimeZones()) {
        	  Console.WriteLine(info.BaseUtcOffset);
        }
        and check it out.

        Comment

        • qwedster
          New Member
          • Jul 2008
          • 24

          #5
          Originally posted by r035198x
          Well they already are sorted by that.
          Run
          Code:
          foreach(TimeZoneInfo info in TimeZoneInfo.GetSystemTimeZones()) {
          	  Console.WriteLine(info.BaseUtcOffset);
          }
          and check it out.
          I want the following OUTPUT (as generated by my VB.NET 9 code - Code Snippet 2), please check the order:

          Offset: -12 Now: 1:48 AM (GMT-12:00) International Date Line West
          Offset: -11 Now: 2:48 AM (GMT-11:00) Midway Island, Samoa
          Offset: -10 Now: 3:48 AM (GMT-10:00) Hawaii
          Offset: -9 Now: 5:48 AM (GMT-09:00) Alaska
          Offset: -8 Now: 6:48 AM (GMT-08:00) Pacific Time (US & Canada)
          Offset: -8 Now: 6:48 AM (GMT-08:00) Tijuana, Baja California
          Offset: -7 Now: 6:48 AM (GMT-07:00) Arizona
          Offset: -7 Now: 7:48 AM (GMT-07:00) Chihuahua, La Paz, Mazatlan - New
          Offset: -7 Now: 7:48 AM (GMT-07:00) Chihuahua, La Paz, Mazatlan - Old
          Offset: -7 Now: 7:48 AM (GMT-07:00) Mountain Time (US & Canada)
          Offset: -6 Now: 7:48 AM (GMT-06:00) Central America
          Offset: -6 Now: 8:48 AM (GMT-06:00) Central Time (US & Canada)
          Offset: -6 Now: 8:48 AM (GMT-06:00) Guadalajara, Mexico City, Monterrey
          - New
          Offset: -6 Now: 8:48 AM (GMT-06:00) Guadalajara, Mexico City, Monterrey
          - Old
          Offset: -6 Now: 7:48 AM (GMT-06:00) Saskatchewan
          Offset: -5 Now: 8:48 AM (GMT-05:00) Bogota, Lima, Quito, Rio Branco
          Offset: -5 Now: 9:48 AM (GMT-05:00) Eastern Time (US & Canada)
          Offset: -5 Now: 8:48 AM (GMT-05:00) Indiana (East)
          Offset: -4.5 Now: 9:18 AM (GMT-04:30) Caracas
          Offset: -4 Now: 10:48 AM (GMT-04:00) Atlantic Time (Canada)
          Offset: -4 Now: 9:48 AM (GMT-04:00) La Paz
          Offset: -4 Now: 9:48 AM (GMT-04:00) Manaus
          Offset: -4 Now: 9:48 AM (GMT-04:00) Santiago
          Offset: -3.5 Now: 11:18 AM (GMT-03:30) Newfoundland
          Offset: -3 Now: 10:48 AM (GMT-03:00) Brasilia
          Offset: -3 Now: 10:48 AM (GMT-03:00) Buenos Aires, Georgetown
          Offset: -3 Now: 11:48 AM (GMT-03:00) Greenland
          Offset: -3 Now: 10:48 AM (GMT-03:00) Montevideo
          Offset: -2 Now: 12:48 PM (GMT-02:00) Mid-Atlantic
          Offset: -1 Now: 1:48 PM (GMT-01:00) Azores
          Offset: -1 Now: 12:48 PM (GMT-01:00) Cape Verde Is.
          Offset: 0 Now: 1:48 PM (GMT) Casablanca, Monrovia, Reykjavik
          Offset: 0 Now: 2:48 PM (GMT) Greenwich Mean Time : Dublin, Edinburgh, L
          isbon, London
          Offset: 1 Now: 3:48 PM (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stock
          holm, Vienna
          Offset: 1 Now: 3:48 PM (GMT+01:00) Belgrade, Bratislava, Budapest, Ljub
          ljana, Prague
          Offset: 1 Now: 3:48 PM (GMT+01:00) Brussels, Copenhagen, Madrid, Paris
          Offset: 1 Now: 3:48 PM (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb
          Offset: 1 Now: 2:48 PM (GMT+01:00) West Central Africa
          Offset: 2 Now: 4:48 PM (GMT+02:00) Amman
          Offset: 2 Now: 4:48 PM (GMT+02:00) Athens, Bucharest, Istanbul
          Offset: 2 Now: 4:48 PM (GMT+02:00) Beirut
          Offset: 2 Now: 4:48 PM (GMT+02:00) Cairo
          Offset: 2 Now: 3:48 PM (GMT+02:00) Harare, Pretoria
          Offset: 2 Now: 4:48 PM (GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn
          , Vilnius
          Offset: 2 Now: 4:48 PM (GMT+02:00) Jerusalem
          Offset: 2 Now: 4:48 PM (GMT+02:00) Minsk
          Offset: 2 Now: 2:48 PM (GMT+02:00) Windhoek
          Offset: 3 Now: 5:48 PM (GMT+03:00) Baghdad
          Offset: 3 Now: 4:48 PM (GMT+03:00) Kuwait, Riyadh
          Offset: 3 Now: 5:48 PM (GMT+03:00) Moscow, St. Petersburg, Volgograd
          Offset: 3 Now: 4:48 PM (GMT+03:00) Nairobi
          Offset: 3 Now: 4:48 PM (GMT+03:00) Tbilisi
          Offset: 3.5 Now: 5:18 PM (GMT+03:30) Tehran
          Offset: 4 Now: 5:48 PM (GMT+04:00) Abu Dhabi, Muscat
          Offset: 4 Now: 6:48 PM (GMT+04:00) Baku
          Offset: 4 Now: 5:48 PM (GMT+04:00) Caucasus Standard Time
          Offset: 4 Now: 6:48 PM (GMT+04:00) Yerevan
          Offset: 4.5 Now: 6:18 PM (GMT+04:30) Kabul
          Offset: 5 Now: 7:48 PM (GMT+05:00) Ekaterinburg
          Offset: 5 Now: 6:48 PM (GMT+05:00) Islamabad, Karachi, Tashkent
          Offset: 5.5 Now: 7:18 PM (GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi
          Offset: 5.5 Now: 7:18 PM (GMT+05:30) Sri Jayawardenepura
          Offset: 5.75 Now: 7:33 PM (GMT+05:45) Kathmandu
          Offset: 6 Now: 8:48 PM (GMT+06:00) Almaty, Novosibirsk
          Offset: 6 Now: 7:48 PM (GMT+06:00) Astana, Dhaka
          Offset: 6.5 Now: 8:18 PM (GMT+06:30) Yangon (Rangoon)
          Offset: 7 Now: 8:48 PM (GMT+07:00) Bangkok, Hanoi, Jakarta
          Offset: 7 Now: 9:48 PM (GMT+07:00) Krasnoyarsk
          Offset: 8 Now: 9:48 PM (GMT+08:00) Beijing, Chongqing, Hong Kong, Urumq
          i
          Offset: 8 Now: 10:48 PM (GMT+08:00) Irkutsk, Ulaan Bataar
          Offset: 8 Now: 9:48 PM (GMT+08:00) Kuala Lumpur, Singapore
          Offset: 8 Now: 9:48 PM (GMT+08:00) Perth
          Offset: 8 Now: 9:48 PM (GMT+08:00) Taipei
          Offset: 9 Now: 10:48 PM (GMT+09:00) Osaka, Sapporo, Tokyo
          Offset: 9 Now: 10:48 PM (GMT+09:00) Seoul
          Offset: 9 Now: 11:48 PM (GMT+09:00) Yakutsk
          Offset: 9.5 Now: 11:18 PM (GMT+09:30) Adelaide
          Offset: 9.5 Now: 11:18 PM (GMT+09:30) Darwin
          Offset: 10 Now: 11:48 PM (GMT+10:00) Brisbane
          Offset: 10 Now: 11:48 PM (GMT+10:00) Canberra, Melbourne, Sydney
          Offset: 10 Now: 11:48 PM (GMT+10:00) Guam, Port Moresby
          Offset: 10 Now: 11:48 PM (GMT+10:00) Hobart
          Offset: 10 Now: 12:48 AM (GMT+10:00) Vladivostok
          Offset: 11 Now: 12:48 AM (GMT+11:00) Magadan, Solomon Is., New Caledonia
          Offset: 12 Now: 1:48 AM (GMT+12:00) Auckland, Wellington
          Offset: 12 Now: 1:48 AM (GMT+12:00) Fiji, Kamchatka, Marshall Is.
          Offset: 13 Now: 2:48 AM (GMT+13:00) Nuku'alofa


          And I don't want the order generated by my C# 3.5 (Code Snippet 2) which is as follows:

          Offset: 0 Now: 1:53 PM (GMT) Casablanca, Monrovia, Reykjavik
          Offset: 0 Now: 2:53 PM (GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, Lo
          ndon
          Offset: 1 Now: 3:53 PM (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vie
          nna
          Offset: 1 Now: 3:53 PM (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Pr
          ague
          Offset: 1 Now: 3:53 PM (GMT+01:00) Brussels, Copenhagen, Madrid, Paris
          Offset: 1 Now: 3:53 PM (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb
          Offset: 1 Now: 2:53 PM (GMT+01:00) West Central Africa
          Offset: 2 Now: 4:53 PM (GMT+02:00) Amman
          Offset: 2 Now: 4:53 PM (GMT+02:00) Athens, Bucharest, Istanbul
          Offset: 2 Now: 4:53 PM (GMT+02:00) Beirut
          Offset: 2 Now: 4:53 PM (GMT+02:00) Cairo
          Offset: 2 Now: 3:53 PM (GMT+02:00) Harare, Pretoria
          Offset: 2 Now: 4:53 PM (GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius

          Offset: 2 Now: 4:53 PM (GMT+02:00) Jerusalem
          Offset: 2 Now: 4:53 PM (GMT+02:00) Minsk
          Offset: 2 Now: 2:53 PM (GMT+02:00) Windhoek
          Offset: 3 Now: 5:53 PM (GMT+03:00) Baghdad
          Offset: 3 Now: 4:53 PM (GMT+03:00) Kuwait, Riyadh
          Offset: 3 Now: 5:53 PM (GMT+03:00) Moscow, St. Petersburg, Volgograd
          Offset: 3 Now: 4:53 PM (GMT+03:00) Nairobi
          Offset: 3 Now: 4:53 PM (GMT+03:00) Tbilisi
          Offset: 3.5 Now: 5:23 PM (GMT+03:30) Tehran
          Offset: 4 Now: 5:53 PM (GMT+04:00) Abu Dhabi, Muscat
          Offset: 4 Now: 6:53 PM (GMT+04:00) Baku
          Offset: 4 Now: 5:53 PM (GMT+04:00) Caucasus Standard Time
          Offset: 4 Now: 6:53 PM (GMT+04:00) Yerevan
          Offset: 4.5 Now: 6:23 PM (GMT+04:30) Kabul
          Offset: 5 Now: 7:53 PM (GMT+05:00) Ekaterinburg
          Offset: 5 Now: 6:53 PM (GMT+05:00) Islamabad, Karachi, Tashkent
          Offset: 5.5 Now: 7:23 PM (GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi
          Offset: 5.5 Now: 7:23 PM (GMT+05:30) Sri Jayawardenepura
          Offset: 5.75 Now: 7:38 PM (GMT+05:45) Kathmandu
          Offset: 6 Now: 8:53 PM (GMT+06:00) Almaty, Novosibirsk
          Offset: 6 Now: 7:53 PM (GMT+06:00) Astana, Dhaka
          Offset: 6.5 Now: 8:23 PM (GMT+06:30) Yangon (Rangoon)
          Offset: 7 Now: 8:53 PM (GMT+07:00) Bangkok, Hanoi, Jakarta
          Offset: 7 Now: 9:53 PM (GMT+07:00) Krasnoyarsk
          Offset: 8 Now: 9:53 PM (GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi
          Offset: 8 Now: 10:53 PM (GMT+08:00) Irkutsk, Ulaan Bataar
          Offset: 8 Now: 9:53 PM (GMT+08:00) Kuala Lumpur, Singapore
          Offset: 8 Now: 9:53 PM (GMT+08:00) Perth
          Offset: 8 Now: 9:53 PM (GMT+08:00) Taipei
          Offset: 9 Now: 10:53 PM (GMT+09:00) Osaka, Sapporo, Tokyo
          Offset: 9 Now: 10:53 PM (GMT+09:00) Seoul
          Offset: 9 Now: 11:53 PM (GMT+09:00) Yakutsk
          Offset: 9.5 Now: 11:23 PM (GMT+09:30) Adelaide
          Offset: 9.5 Now: 11:23 PM (GMT+09:30) Darwin
          Offset: 10 Now: 11:53 PM (GMT+10:00) Brisbane
          Offset: 10 Now: 11:53 PM (GMT+10:00) Canberra, Melbourne, Sydney
          Offset: 10 Now: 11:53 PM (GMT+10:00) Guam, Port Moresby
          Offset: 10 Now: 11:53 PM (GMT+10:00) Hobart
          Offset: 10 Now: 12:53 AM (GMT+10:00) Vladivostok
          Offset: 11 Now: 12:53 AM (GMT+11:00) Magadan, Solomon Is., New Caledonia
          Offset: 12 Now: 1:53 AM (GMT+12:00) Auckland, Wellington
          Offset: 12 Now: 1:53 AM (GMT+12:00) Fiji, Kamchatka, Marshall Is.
          Offset: 13 Now: 2:53 AM (GMT+13:00) Nuku'alofa
          Offset: -1 Now: 1:53 PM (GMT-01:00) Azores
          Offset: -1 Now: 12:53 PM (GMT-01:00) Cape Verde Is.
          Offset: -2 Now: 12:53 PM (GMT-02:00) Mid-Atlantic
          Offset: -3 Now: 10:53 AM (GMT-03:00) Brasilia
          Offset: -3 Now: 10:53 AM (GMT-03:00) Buenos Aires, Georgetown
          Offset: -3 Now: 11:53 AM (GMT-03:00) Greenland
          Offset: -3 Now: 10:53 AM (GMT-03:00) Montevideo
          Offset: -3.5 Now: 11:23 AM (GMT-03:30) Newfoundland
          Offset: -4 Now: 10:53 AM (GMT-04:00) Atlantic Time (Canada)
          Offset: -4 Now: 9:53 AM (GMT-04:00) La Paz
          Offset: -4 Now: 9:53 AM (GMT-04:00) Manaus
          Offset: -4 Now: 9:53 AM (GMT-04:00) Santiago
          Offset: -4.5 Now: 9:23 AM (GMT-04:30) Caracas
          Offset: -5 Now: 8:53 AM (GMT-05:00) Bogota, Lima, Quito, Rio Branco
          Offset: -5 Now: 9:53 AM (GMT-05:00) Eastern Time (US & Canada)
          Offset: -5 Now: 8:53 AM (GMT-05:00) Indiana (East)
          Offset: -6 Now: 7:53 AM (GMT-06:00) Central America
          Offset: -6 Now: 8:53 AM (GMT-06:00) Central Time (US & Canada)
          Offset: -6 Now: 8:53 AM (GMT-06:00) Guadalajara, Mexico City, Monterrey - New
          Offset: -6 Now: 8:53 AM (GMT-06:00) Guadalajara, Mexico City, Monterrey - Old
          Offset: -6 Now: 7:53 AM (GMT-06:00) Saskatchewan
          Offset: -7 Now: 6:53 AM (GMT-07:00) Arizona
          Offset: -7 Now: 7:53 AM (GMT-07:00) Chihuahua, La Paz, Mazatlan - New
          Offset: -7 Now: 7:53 AM (GMT-07:00) Chihuahua, La Paz, Mazatlan - Old
          Offset: -7 Now: 7:53 AM (GMT-07:00) Mountain Time (US & Canada)
          Offset: -8 Now: 6:53 AM (GMT-08:00) Pacific Time (US & Canada)
          Offset: -8 Now: 6:53 AM (GMT-08:00) Tijuana, Baja California
          Offset: -9 Now: 5:53 AM (GMT-09:00) Alaska
          Offset: -10 Now: 3:53 AM (GMT-10:00) Hawaii
          Offset: -11 Now: 2:53 AM (GMT-11:00) Midway Island, Samoa
          Offset: -12 Now: 1:53 AM (GMT-12:00) International Date Line West

          Comment

          • r035198x
            MVP
            • Sep 2006
            • 13225

            #6
            I see then that you want the order reversed. I don't know that VB syntax's equivalent in C# but a work around is to add all the timezones into a List<TimeZoneIn fo> and then calling list.Reverse() on it.

            Comment

            • Kitizhi
              New Member
              • Aug 2013
              • 1

              #7
              Instead of using
              Code:
              ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones()
              use

              Code:
              System.Collections.ArrayList timeZones = Infragistics.Win.Utilities.GetTimeZones();

              Comment

              • usmanarshad1
                New Member
                • Jan 2014
                • 1

                #8
                Originally posted by qwedster
                Thanks for the reply!

                I want to the TimeZones in the Order of of BaseUtcOffset (as I haved stated in the VB.NET 9 code - Code snippet 2).

                I am not sure about the corresponding C# 3.5 code, which I guess should be something like,

                TimeZoneInfo.Ge tSystemTimeZone s().OrderBy(Fun c<TimeZoneInfo zone> zone.BaseUtcOff set.TotalHours) ; //???
                Below code should help.
                TimeZoneInfo.Ge tSystemTimeZone s().OrderBy(t => t.BaseUtcOffset );

                while assigning to drop down use this
                ValueMember = "Id"
                DisplayMember = "DisplayNam e"

                Comment

                Working...