与我现在正在做的事情模糊相关......一些可能会有所帮助的建议:
- 我也在做“Thread.CurrentThread.CurrentCulture = ...”之后这样做
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
我个人动态构建我的 CalendarExtender,但重要的一行是格式:
ce = new CalendarExtender();
ce.ID = "CalExtender";
ce.Format = ShortDatePatternDoubleDigit;
在其他地方我有这个静态方法:
public static string ShortDatePatternDoubleDigit
{
get
{
string shortDatePattern = Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern;
if (!shortDatePattern.Contains("MM"))
shortDatePattern = shortDatePattern.Replace("M", "MM");
if (!shortDatePattern.Contains("dd"))
shortDatePattern = shortDatePattern.Replace("d", "dd");
if (!shortDatePattern.Contains("yyyy"))
shortDatePattern = shortDatePattern.Replace("yy", "yyyy");
return shortDatePattern;
}
}
由于我们在美国和英国都有客户,因此日期必须以 mm/dd/yyyy 或 dd/mm/yyyy 为单位(我们使用蒙版编辑扩展器,因此使用两位数表示日期和月份)。
在客户端,在javascript中我可以访问这样的格式字符串(getter),但我不知道是否可以设置,我没有尝试过。它可能会对您的“无回发”场景有所帮助:
var dateBox = $get('xxxx_DatePicker_TextBox');
var dateFormat = dateBox.CalendarBehavior._format; //this contains dd/MM/yyyy for example
请注意,您可能必须再次更改此格式,例如,我正在使用 jQuery UI 日期选择器,MM 被解释为月份全名,而在 C# 中,MM 是两位数的月份。更糟糕的是,C# 中的 yyyy 是四位数的年份,但对于 jQuery datepicker,yy 是四位数的年份,所以 yyyy 会以 20152015 结尾。你可以做一个脏:
_format.replace(/M/g, "m").replace(/yy/g, "y")