我正在使用一个具有本地化和全球化功能的ASP.NET应用程序。在给定用户环境的情况下,我很难理解如何让javascript中的Date()函数正常工作。我的用户群分布在墨西哥(西班牙语)和美国(英语)。由于墨西哥日期格式是dd/mm/yyyy,而英文格式是mm/dd/yyyy,所以标准日期(StrDate) javascript构造函数不适用于我。
有没有人知道处理javascript日期值全球化/本地化的最好方法?我有一些业务规则要强制执行,比如dateA必须比dateB提前90天,dateB不能超过今天。
发布于 2009-02-17 02:56:57
看看datejs,它可以很好地处理本地化。它与a lot of globalization setups一起提供。您只需加载当前CultureInfo的全球化设置,datejs就会处理剩下的事情。
发布于 2009-02-17 02:54:54
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;
}发布于 2010-04-16 17:15:39
你可以使用: var a=Date.parseLocale(值,格式);
如果未提供自定义格式,则此函数使用Sys.CultureInfo.CurrentCulture属性来确定区域性值。
你可以看看:http://msdn.microsoft.com/en-us/library/bb397521.aspx
https://stackoverflow.com/questions/555353
复制相似问题