首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript日期本地化

Javascript日期本地化
EN

Stack Overflow用户
提问于 2009-02-17 02:33:47
回答 4查看 14.8K关注 0票数 10

我正在使用一个具有本地化和全球化功能的ASP.NET应用程序。在给定用户环境的情况下,我很难理解如何让javascript中的Date()函数正常工作。我的用户群分布在墨西哥(西班牙语)和美国(英语)。由于墨西哥日期格式是dd/mm/yyyy,而英文格式是mm/dd/yyyy,所以标准日期(StrDate) javascript构造函数不适用于我。

有没有人知道处理javascript日期值全球化/本地化的最好方法?我有一些业务规则要强制执行,比如dateA必须比dateB提前90天,dateB不能超过今天。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-02-17 02:56:57

看看datejs,它可以很好地处理本地化。它与a lot of globalization setups一起提供。您只需加载当前CultureInfo的全球化设置,datejs就会处理剩下的事情。

票数 12
EN

Stack Overflow用户

发布于 2009-02-17 02:54:54

Matt Kruse开发了一个really interesting date library,它应该可以帮助您处理特定的案例。

下面是您应该为您提到的问题使用的方法的一个片段:

代码语言:javascript
复制
// ------------------------------------------------------------------
// 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
EN

Stack Overflow用户

发布于 2010-04-16 17:15:39

你可以使用: var a=Date.parseLocale(值,格式);

如果未提供自定义格式,则此函数使用Sys.CultureInfo.CurrentCulture属性来确定区域性值。

你可以看看:http://msdn.microsoft.com/en-us/library/bb397521.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/555353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档