我们有一个本地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');
}
有没有更好的解决方案?请注意,这仅用于在标准视图中显示列表,并且基础数据不受影响。
答案 0 :(得分:2)
查看Date对象的toLocaleString / toLocaleFormat方法。也许他们在这里很有用。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString