Локализация Даты Javascript
Я работаю с ASP.NET приложение с локализацией и глобализацией. У меня возникли некоторые трудности с пониманием того, как заставить функцию Date() в javascript работать должным образом с учетом среды пользователя. Моя база пользователей разделена между Мексикой (испанский) и США (английский). Поскольку формат даты в Мексике-dd/mm/yyyy, а английский-mm/dd / yyyy, стандартный конструктор javascript Date(strDate) не работает для меня.
кто-нибудь знает лучший способ справиться с глобализация / локализация значения даты javascript? У меня есть некоторые бизнес-правила для обеспечения, как dateA должно быть за 90 дней до dateB и dateB не может превышать сегодня.
4 ответов
посмотри datejs, Он очень хорошо обрабатывает локализацию. Он поставляется с много настроек глобализации. Вы просто загружаете настройку глобализации вашего текущего CultureInfo, а datejs заботится об остальном.
Мэтт Круз разработал очень интересная современная библиотека что должно помочь в вашем конкретном случае.
вот фрагмент метода, который вы должны использовать для проблемы, о которой Вы упомянули:
// ------------------------------------------------------------------
// parseDate( date_string [, prefer_euro_format] )
//
// This function takes a date string and tries to match it to a
// number of possible date formats to get the value. It will try to
// match against the following international formats, in this order:
// y-M-d MMM d, y MMM d,y y-MMM-d d-MMM-y MMM d
// M/d/y M-d-y M.d.y MMM-d M/d M-d
// d/M/y d-M-y d.M.y d-MMM d/M d-M
// A second argument may be passed to instruct the method to search
// for formats like d/M/y (european format) before M/d/y (American).
// Returns a Date object or null if no patterns match.
// ------------------------------------------------------------------
function parseDate(val) {
var preferEuro=(arguments.length==2)?arguments[1]:false;
generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');
monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');
dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');
var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');
var d=null;
for (var i=0; i<checkList.length; i++) {
var l=window[checkList[i]];
for (var j=0; j<l.length; j++) {
d=getDateFromFormat(val,l[j]);
if (d!=0) { return new Date(d); }
}
}
return null;
}
вы можете использовать: var a = Date.parseLocale (значение, форматы);
Если вы не предоставляете пользовательские форматы, эта функция использует Sys.Свойство CultureInfo.CurrentCulture свойство для определения значения культуры.
вы можете взглянуть на:http://msdn.microsoft.com/en-us/library/bb397521.aspx
Я написал ответ на этот здесь. Он использует toLocalString для определения MM/DD/YYY, DD/MM / YYYY,...