WP7 DAteTime разные локали - PullRequest
       13

WP7 DAteTime разные локали

0 голосов
/ 13 августа 2011

Я пишу приложение для WP7, и часть функций включает использование значения DateTime. Это значение также сохраняется (в базе данных Sterling).

Я пытался уклониться от различных культурных ценностей в датах, и там, где мне нужно это представить, я делаю это, используя свой собственный формат. Я никогда не возился с DateTime как таковым.

Все отлично работает с эмулятором, на ПК, на котором установлена ​​английская версия (локаль Новой Зеландии)

Но на самом телефоне все было испорчено, как день и месяц. Теперь я понял, что языком на телефоне был английский (США), а региональным форматом был английский (Новая Зеландия). Изменились оба на английский (США), и все хорошо по телефону.

Итак, мои вопросы:

1 / если мне нужно учесть разные локали и регионы

2 / Существует ли простой способ убедиться, что эта проблема не возникает?

Мой код выглядит следующим образом

Свойство определено следующим образом

 public const string NextDateTimePropertyName = "NextDateTime";
    private DateTime _nextDateTime;
    public DateTime NextDateTime
    {
        get
        {
            return _nextDateTime;
        }
        set
        {
            if (_nextDateTime != value)
            {

                _nextDateTime = value;
                RaisePropertyChanged(NextDateTimePropertyName);

            }
        }

    }

Привязка для отображения даты следующим образом TextBlock Text = "{Binding DateTimeDayString}"

и свойство в моем классе hat отображается на привязку

 public string DateTimeDayString
    {

        get
        {
            return NextDateTime.ToString("dddd MMM d");
        }

    }

Когда язык и регион телефона совпадают, все работает нормально, однако, когда язык и регион разные, т.е. язык английский - Великобритания и английский - США, 9 августа при вводе будет отображаться как «четверг, 8 сентября»

Я понимаю, что наличие разных локалей и регионов - это необычная установка ... но я искал, как я могу защитить себя от этого.

Дата выбирается с помощью элемента управления DatePicker

x:Name="datePicker"  Value="{Binding EventDate, Mode=TwoWay, UpdateSourceTrigger=Explicit}"
                 ValueChanged="datePicker_ValueChanged" ValueStringFormat="{}{0:D}"   Margin="22,87,91,0" 

со свойством в модели представления следующим образом

 private DateTime _EventDateTime;
    public DateTime EventDateTime
    {

        get
        {
            return _EventDateTime;
        }

        set
        {
            if (value != null)
            {
                _EventDateTime = value;

            }


        }


    }

А когда я храню эту недвижимость

CurrSingleEventItem.NextDateTime = EventDate.BuildDateTime (EventTime);

и метод BuildDateTime Extension (потому что у меня есть пользователь, который также вводит время с помощью таймера

 public static DateTime BuildDateTime(this String DateString, String time)
    {


        DateTime dt = System.Convert.ToDateTime(DateString);
        DateTime timedt = System.Convert.ToDateTime(time);
        string timestr = timedt.ToString("H:mm");
        DateTime newDt = System.Convert.ToDateTime(dt.ToLongDateString() + " "  + timestr + ":00");
        return newDt;

    }
  • спасибо - Питер

1 Ответ

0 голосов
/ 13 августа 2011

Вы на самом деле не сказали, что было не так - «день и месяц облажались» не очень точно.Если формат региона был установлен в Новой Зеландии, и вы видели даты, отформатированные как dd / MM / yyyy, мне это кажется вполне разумным - это то, что кто-то из Новой Зеландии (или Великобритании, или большинства других мест, кроме США ...)), вероятно, ожидали.

Что касается того, нужно ли вам разрешать использование разных локалей и регионов - это полностью ваше дело.Вы ожидаете, что приложение будет использоваться в нескольких странах?Если это так, то вы абсолютно должны быть чувствительными к культуре.

Что касается вашего второго вопроса: не совсем ясно, что во-первых, была "проблема".Если дата была просто отформатирована в новозеландском стиле, я не вижу в этом проблемы.Если вы каким-то образом получили поврежденные данные, это другое дело, и вам нужно дать гораздо больше подробностей.

...