Asp.net

Javascript 日期本地化

  • August 9, 2013

我正在使用具有本地化和全球化的 ASP.NET 應用程序。在給定使用者環境的情況下,我很難理解如何讓 JavaScript 中的 Date() 函式正常工作。我的使用者群分佈在墨西哥(西班牙語)和美國(英語)之間。由於墨西哥日期格式為 dd/mm/yyyy,英文格式為 mm/dd/yyyy,標準 Date(strDate) javascript 建構子對我不起作用。

有誰知道處理 javascript Date 值的全球化/本地化的最佳方法?我有一些業務規則要強制執行,例如 dateA 必須比 dateB 早 90 天,而 dateB 不能超過今天。

看看datejs,它可以很好地處理本地化。它帶有很多全球化設置。您只需載入目前 CultureInfo 的全球化設置,而 datejs 會負責其餘的工作。

Matt Kruse開發了一個非常有趣的日期庫,它應該對您的特定情況有所幫助。

這是您應該針對您提到的問題使用的方法的片段:

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

引用自:https://stackoverflow.com/questions/555353