2017-05-04 80 views
0

我試圖在Datatable列中顯示格式正確的日期。我使用MomentJS正確檢測和格式的單元格,因爲它是作爲一個yyyyMMdd(即20051201)從數據庫字符串:Datatables/MomentJS - 當區域更改時更改日期格式

columns: [ 
    { 
     data: "fechaPago", 
     "render": function(data){ 
      return (moment(data).isValid()) ? moment(data).format("DD/MM/YYYY") : "-"; 
     } 
    }, 
] 

其中工程完全按照預期:

enter image description here

現在,我正在努力實現更靈活的方法,並讓當前區域確定格式。我們已經在我們的webapp 3種可用的語言,並我想要的數據表來檢測當前語言更改格式(從dd/MM/yyyyMM/dd/yyyy,如果是英文)。

我曾嘗試使用'LLLL'作爲格式,但它返回全日的信件,我找不出如何修改它。

+1

確實['格式( 'L')'](http://momentjs.com/docs/#/displaying/format/)滿足您的需求? – VincenzoC

+0

@VincenzoC感謝Vincenzo的幫助。它部分的確如此,因爲它簡化了格式化。但是,當我更改語言時,它不會更改格式。 – wickedchild

+0

您的代碼中是否已經有語言環境信息,或者您正在詢問如何獲取瀏覽器語言環境(本例中爲搜索,例如,請參閱[here](http://stackoverflow.com/q/1043339/4131048))? – VincenzoC

回答

1

您可以使用時刻locale(String)函數來設置一段時間的語言環境oblect或moment.locale(String)來全局設置時刻語言環境。

若要本地化的日,月,年使用L令牌在format()

您的代碼將是這樣的:

columns: [ 
    { 
    data: "fechaPago", 
    "render": function(data){ 
     var locale = // get current locale code 
     return (moment(data).isValid()) ? moment(data).locale(locale).format("L") : "-"; 
    } 
    }, 
] 

記住使用moment-with-locales.js(或進口所需的語言環境)。

+0

再次文森佐。我嘗試過使用你的解決方案,即使yyyyMMdd字符串被格式化爲MM-dd-yyyy,當我切換全局語言環境時,即使重新加載時也不會改變。 – wickedchild

+1

@wickedchild問題可能是你的語言環境,試圖考驗我的解決方案硬編碼區域的方式('VAR區域=「EN-GB」;')和的rember使用['時刻與 - locales.js'(HTTPS ://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js)(或導入必需的語言環境)。 – VincenzoC

+0

就是這樣!我正在使用常規moment.js,切換到另一個做了訣竅:)非常感謝您的時間,文森佐:) – wickedchild