如何在SAPUI5中选择日历周?

时间:2015-07-09 11:21:04

标签: datepicker sapui5

我正在寻找一种只用DatePicker选择日历周的方法。 有没有办法以某种方式配置该控件,它允许选择一周并在本周之外发送DateTime元素?

我使用格式选项列表检测到以下条目,但是周格式化似乎无效: http://scn.sap.com/community/developer-center/front-end/blog/2013/04/28/working-with-odata-dates

此代码似乎无效:

new sap.m.DatePicker({
  value : {
    path : "DateTime",
    type : new sap.ui.model.type.Date({pattern: "w yy"})
  }
}),

绑定是DateTime

类型的OData属性Edm:DateTime

1 个答案:

答案 0 :(得分:2)

很少有事情需要注意:

虽然 SAPUI5 表示它支持几周,但目前! //我测试了

为什么呢?在SAPUI5的DateFormat.js文件中

case "weekInYear":
    sWeek = "";
    //TODO getWeek does not exist on Date object
    //-> this is a preparation for a future or custom week support
    if (oDate.getWeek) {
        sWeek += oDate.getWeek();
    }
    aBuffer.push(jQuery.sap.padLeft(sWeek, "0", oPart.iDigits));
    break;

如您所见,它位于 TODO 列表!!

解决方法?是的:

jQuery.sap.require("sap.ui.core.format.DateFormat");

//define getWeek function
Date.prototype.getWeek = function () {
    var d = new Date(+this);
    d.setHours(0, 0, 0);
    d.setDate(d.getDate() + 4 - (d.getDay() || 7));
    return Math.ceil((((d - new Date(d.getFullYear(), 0, 1)) / 8.64e7) + 1) / 7);
};
var oDateFormat = sap.ui.core.format.DateFormat.getDateInstance({
    pattern: "w y"
});
var oDatePicker = new sap.m.DatePicker({
    dateValue: new Date(),
    displayFormat: "w y"
})

JSBin code piece is here