Форматировать дату на этикетке независимо от культуры - PullRequest
0 голосов
/ 26 октября 2011

На моей странице ascx у меня есть:

    <tr>
        <td class="lbl">Geboortedatum</td>
        <td class="lbl">:</td>
        <td class="data">
            <asp:Label ID="tbBirthDate"  CssClass="details" runat="server" />
        </td>
    </tr>

Этот Birtdate заполняется из файла cs:

        var cust = (from c in db.tbCustomers
                    join s in db.tbStreets on new { c.StreetId, c.PostCode } equals new { s.StreetId, s.PostCode }
                    join p in db.tbPostalAreas on s.PostCode equals p.PostCode
                    where c.Id == customerId
                    select new
                    {
                        FirstNames = c.FirstNames,
                        MiddleName = c.MiddleName,
                        LastName = c.LastName,
                        BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value.ToShortDateString()),
                        StreetName = s.Street,
                        HouseNumber = c.HouseNumber,
                        PostCode = c.PostCode,
                        PostCodeLetters = c.StreetId,
                        City = p.City,
                        Email = c.Email,
                        Mobile = c.PhoneMobile,
                        PickUpAddress = c.PickupAddress

                    }).SingleOrDefault();

        if (cust != null)
        {
            tbFirstName.Text = cust.FirstNames;
            tbLastName.Text = (cust.MiddleName != null) ? cust.MiddleName + " " + cust.LastName : cust.LastName;
            tbBirthDate.Text = cust.BirthDate;
            tbStreetName.Text = cust.StreetName + " " + cust.HouseNumber;
            tbPostCode.Text = cust.PostCode + " " + cust.PostCodeLetters;
            tbCity.Text = cust.City;
            tbEmail.Text = cust.Email;
            tbMobile.Text = cust.Mobile;
            tbPickupAddress.Text = cust.PickUpAddress;
        }

Теперь при локальном запуске я получаю дату, как 26-102011, но при размещении на моем сервере я получаю 26.10.2011 Как я могу заставить дату отображаться как 26-10-2011?

Ответы [ 5 ]

2 голосов
/ 26 октября 2011

Вы пытаетесь отформатировать дату дважды:

string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value.ToShortDateString())

Удалить звонок на ToShortDateString

string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value)

Обновление

Или еще лучше:

c.BirthDate.Value.ToString("dd-MM-yyyy")

Чтобы действительно убедиться, что культура не влияет на вещи, вы можете указать культуру явно:

c.BirthDate.ToString("dd-MM-yyyy", 
    CultureInfo.GetCultureInfo("en-US").DateTimeFormat)
1 голос
/ 26 октября 2011

Я думаю, что если вы замените:

BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value.ToShortDateString()),

на:

BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value).

это должно работать

0 голосов
/ 26 октября 2011

Почему бы вам не сделать эту строку

 tbBirthDate.Text = cust.BirthDate;

в tbBirthDate.Text = cust.BirthDate.ToString("dd-MM-yyyy");

Это не будет учитывать любую культурную информацию о курсе!

0 голосов
/ 26 октября 2011

Замените BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value.ToShortDateString()) на BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value).

Первая форма сначала получает дату, затем локальную форму строки короткой даты, а затем форматирует ее, ничего не делая.Второй получает дату, а затем форматирует ее, помещая в дд-мм-гггг

0 голосов
/ 26 октября 2011

Ваша проблема здесь:

string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value.ToShortDateString())

Вы пытаетесь отформатировать дату как строку с определенным форматом, но вы уже преобразовали дату в строку с ToShortDateString (используятекущая культура).Формат, который вы указали в string.Format, не имеет смысла для строки ...

Вместо этого вы должны отформатировать дату следующим образом:

c.BirthDate.ToString("dd-MM-YYYY");

Кстати, обратите внимание на "MM "part вместо" mm ": mm - минуты, что доказывает, что указанный вами формат не был учтен в вашем текущем коде

...