private void ModifyTimeZone()
        {
            try
            {
                if (SelectedTimeZoneViewModel == null)
                {
                    Messenger.Default.Send(new NotificationMessage("请先选择时间区!"), Tokens.TimeZonePage_ShowNotification);
                    return;
                }

                var viewModel = new TimeZoneViewModel(SelectedTimeZoneViewModel.CurrentTimeZone);

                Messenger.Default.Send(new OpenWindowMessage()
                {
                    DataContext = viewModel
                }, Tokens.OpenTimeZoneView);
                if (viewModel.ViewModelAttachment.LastOperationSuccess)
                {
                    var index = TimeZoneViewModels.IndexOf(SelectedTimeZoneViewModel);
                    TimeZoneViewModels[index] = viewModel;
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
        }
        private void AddTimeZone()
        {
            try
            {
                var timeZoneViewModel = new TimeZoneViewModel(new Model.TimeZone());

                Messenger.Default.Send(new OpenWindowMessage()
                {
                    DataContext = timeZoneViewModel
                }, Tokens.OpenTimeZoneView);
                if (timeZoneViewModel.ViewModelAttachment.LastOperationSuccess)
                {
                    TimeZoneViewModels.Add(new TimeZoneViewModel((timeZoneViewModel.ViewModelAttachment.CoreModel)));
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
        }
示例#3
0
        public async Task <IActionResult> TimeZone()
        {
            var user = await userManager.FindByIdAsync(HttpContext.User.GetUserId());

            var model = new TimeZoneViewModel();

            model.TimeZoneId = user.TimeZoneId;
            if (string.IsNullOrEmpty(model.TimeZoneId))
            {
                model.TimeZoneId = await timeZoneIdResolver.GetSiteTimeZoneId();
            }
            model.AllTimeZones = tzHelper.GetTimeZoneList().Select(x =>
                                                                   new SelectListItem
            {
                Text     = x,
                Value    = x,
                Selected = model.TimeZoneId == x
            });

            return(View(model));
        }
        public HttpResponseMessage GetTimeZones()
        {
            var tzs       = TimeZoneInfo.GetSystemTimeZones();
            var timeZones = new List <TimeZoneViewModel>();
            var pattern   = "\\w+(\\-|\\+)\\d+:\\d+|UTC";
            var regex     = new Regex(pattern);

            foreach (var tz in tzs)
            {
                TimeZoneViewModel tzsInfo = new TimeZoneViewModel();
                if (tz.IsDaylightSavingTime(DateTime.Now))
                {
                    var    name       = tz.DisplayName;
                    var    utcoffset  = tz.GetUtcOffset(DateTime.Now);
                    var    hours      = utcoffset.Hours.ToString("+00;-00");
                    var    minutes    = utcoffset.Minutes.ToString("00").Replace("-", "");
                    string displayUtc = hours + ":" + minutes;
                    if (utcoffset.Ticks == 0)
                    {
                        tzsInfo.DisplayName = regex.Replace(name, "UTC");
                    }
                    else
                    {
                        tzsInfo.DisplayName = regex.Replace(name, "UTC" + displayUtc);
                    }
                    tzsInfo.Id = tz.Id;
                }
                else
                {
                    tzsInfo.DisplayName = tz.DisplayName;
                    tzsInfo.Id          = tz.Id;
                }
                timeZones.Add(tzsInfo);
            }
            return(Request.CreateResponse(timeZones));
        }