[ACCEPTED]-How do I enumerate all time zones in .NET?-timezone

Accepted answer
Score: 43

No it doesn't, it returns every time zone 6 the Windows machine knows about (in my installation, that's 5 91). The if statement you have there is what 4 is limiting your output. Take that out but 3 leave the Console.WriteLine part, and you'll see all 91 (or 2 so) timezones.

e.g.

ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();

foreach (TimeZoneInfo timeZoneInfo in timeZones)
  Console.WriteLine("{0}", timeZoneInfo.DisplayName);

That should write out 1 91 timezones to your console.

Score: 5

Your code works fine for me. Here's the 11 output on my box:

You might be in the following 10 time zones: (GMT) Casablanca (GMT)
Greenwich 9 Mean Time : Dublin,
Edinburgh, Lisbon, London 8 (GMT)
Monrovia, Reykjavik

That's all 7 the ones with the same offset at the moment, which 6 is what your code clearly displays - if 5 you want all the timezones, just remove the 4 "if" part, as Robert says.

If you think you 3 should be seeing more zones, could you tell 2 us which timezone you're in so we can work 1 out what other ones should be displayed?

Score: 4

This method is used to bind all timezones 2 in Dev express Drop Down. I hope it will 1 help for Someone.

private void FillTimeZone(ASPxComboBox ddlTimeZone)
{   
   ddlTimeZone.DataSource = TimeZoneInfo.GetSystemTimeZones();   
   ddlTimeZone.DataBind();  
   ListEditItem oListEditItem=new ListEditItem();   
   oListEditItem.Text=Helper.SELECT;   
   oListEditItem.Value=Helper.SELECT;   
   ddlTimeZone.Items.Add(oListEditItem);   
   ddlTimeZone.SelectedIndex = 0;
}
Score: 2

If wanting a json output from a WebAPI call:

using System;
using System.Collections.Generic;

namespace MyProject.ViewModels
{
    public class TimeZoneViewModel
    {
        public readonly List<CTimeZone> CTimeZones;

        public TimeZoneViewModel()
        {
            CTimeZones = new List<CTimeZone>();
            foreach (TimeZoneInfo z in TimeZoneInfo.GetSystemTimeZones())
            {
                var tz = new CTimeZone(z.Id, z.DisplayName, z.BaseUtcOffset);
                CTimeZones.Add(tz);
            }
        }

    }

    public class CTimeZone
    {
        public string Id { get; set; }
        public string DisplayName { get; set; }
        public TimeSpan BaseUtcOffset { get; set; }

        public CTimeZone(string id, string displayName, TimeSpan utcOffset)
        {
            Id = id;
            DisplayName = displayName;
            BaseUtcOffset = utcOffset;
        }
    }
}

Then 1 use it in WebAPI:

[HttpGet("Api/TimeZones")]
public JsonResult GetTimeZones()
{
    return Json(new TimeZoneViewModel().CTimeZones);
}

Output:

[{
    "id": "Dateline Standard Time",
    "displayName": "(UTC-12:00) International Date Line West",
    "baseUtcOffset": "-12:00:00"
  },
  {
    "id": "UTC-11",
    "displayName": "(UTC-11:00) Coordinated Universal Time-11",
    "baseUtcOffset": "-11:00:00"
  },
  {
    "id": "Aleutian Standard Time",
    "displayName": "(UTC-10:00) Aleutian Islands",
    "baseUtcOffset": "-10:00:00"
  },
  {
    "id": "Hawaiian Standard Time",
    "displayName": "(UTC-10:00) Hawaii",
    "baseUtcOffset": "-10:00:00"
  },...

More Related questions