2009-02-17 5 views
10

Я работаю с приложением ASP.NET с локализацией и глобализацией. Мне сложно понять, как получить функцию Date() в javascript для правильной работы с учетом среды пользователя. Моя база пользователей разделена между Мексикой (испанский) и США (английский). Поскольку формат даты в Мексике равен dd/mm/yyyy, а английский формат - mm/dd/yyyy, стандартный конструктор javascript Date (strDate) не работает для меня.Дата создания Javascript Локализация

Кто-нибудь знает, как лучше всего справиться с глобализацией/локализацией значения даты javascript? У меня есть некоторые бизнес-правила для принудительного исполнения, так как dateA должен быть за 90 дней до датыB, а dateB не может превышать сегодня.

ответ

12

Посмотри на datejs, он обрабатывает локализацию очень хорошо. Он поставляется с a lot of globalization setups. Вы просто загружаете настройку глобализации своего текущего CultureInfo, а datejs заботится обо всем остальном.

1

Matt Kruse разработал really interesting date library, который должен помочь в вашем конкретном случае.

Вот фрагмент этого метода вы должны использовать для выпуска вы упомянули:

// ------------------------------------------------------------------ 
// 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; 
    } 
+1

Я смотрю на это, но в конце концов все закончилось тем, что было немного больше работы, чтобы получить все это вместе. Спасибо за вашу помощь. – RSolberg

0

Вы можете использовать: var a = Date.parseLocale (значение, форматы);

Если вы не указали произвольные форматы, эта функция использует свойство Sys.CultureInfo.CurrentCulture для определения значения культуры.

Вы можете посмотреть на: http://msdn.microsoft.com/en-us/library/bb397521.aspx

Смежные вопросы