将特定于地区的日期格式化为dd-MMM-yyyy?

时间:2015-07-13 15:01:26

标签: javascript date sharepoint

我们有一个本地SharePoint安装,其中供应商公司编写了一个JavaScript函数来解析给定列表中的所有日期字段,并在页面加载时在d-MMM-yyyy(例如2015年12月24日)中显示它们。但是,当用户将区域设置从United States (English)更改为United Kingdom (English)时,日期解析将失败,因为日期格式已从mm/dd/yyyy更改为dd/mm/yyyy。同样适用于其他语言环境。

使用此JavaScript解决方案,基于动态区域设置解析日期的最佳方法是什么?

目前,我能够获取用户选择的LCID并检索文化代码(例如en-US)并将其传递到SugarJS库,如下所示:

var currentCulture = "";

function configureCulture(){
    //To accurately retrieve user culture, scrape the Regional Settings page for LCID
    //This is a terrible hack, but couldn't find any other solution
    var regionalSettingsUrl = ctx.HttpRoot+"/_layouts/regionalsetng.aspx?Type=User";

    jQuery.ajax({ 
        url: regionalSettingsUrl, 
        async: false,
        dataType: 'html',
        success: function(data) {
            var lcid = jQuery(data).find("select[name$='LCID'] option:selected")[0].value;
            currentCulture = LCIDUtils.getCultureName(lcid);
            },
        error: function(jqXHR, textStatus, errorThrown){
              //debugMessage(errorThrown);
            }
    });
}

//passedDate param is a string representation of a date
//actual date varies based on culture, so must parse appropriately
//e.g. 12/3/2014 is 3-Dec-2014 in United States 
//but 12-Mar-2014 in United Kingdom
function ApplyDateFormat(passedDate) {
    if(currentCulture == ""){
        configureCulture();
    }

    //Uses the SugarJs libary to create a date based on current culture code
    return Date.create(passedDate, currentCulture).format('d-MMM-yyyy');
}

有没有更好的解决方案?请注意,这仅用于在标准视图中显示列表,并且基础数据不受影响。

1 个答案:

答案 0 :(得分:2)

查看Date对象的toLocaleString / toLocaleFormat方法。也许他们在这里很有用。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString