在我的ascx页面我有:
<tr>
<td class="lbl">Geboortedatum</td>
<td class="lbl">:</td>
<td class="data">
<asp:Label ID="tbBirthDate" CssClass="details" runat="server" />
</td>
</tr>
这个出生日期是从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-10-2011这样的日期,但当放在我的服务器上时,我得到10/26/2011如何强制日期显示为26-10-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)
我想如果你替换:
BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value.ToShortDateString()),
:
BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value).
应该可以
你的问题在这里:
string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value.ToShortDateString())
您正在尝试将日期格式化为具有特定格式的字符串,但是您已经将日期转换为具有ToShortDateString
的字符串(使用当前区域性)。您在string.Format
中指定的格式对字符串没有意义…
相反,你应该这样格式化日期:
c.BirthDate.ToString("dd-MM-YYYY");
顺便说一下,请注意"MM"部分而不是"MM":MM表示分钟,这证明当前代码中没有考虑到您指定的格式
将BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value.ToShortDateString())
替换为BirthDate = string.Format("{0:dd-mm-yyyy}", c.BirthDate.Value)
第一个表单首先获取日期,然后获取短日期字符串的本地格式,然后对其执行不执行任何操作的格式。第二个函数获取日期,然后对其进行格式化,将其输入dd-mm-yyyy
为什么不把这一行改成
tbBirthDate.Text = cust.BirthDate;
into tbBirthDate.Text = cust.BirthDate.ToString("dd-MM-yyyy")
;
这当然不会考虑任何文化信息!