<mvc:View controllerName="<PROJECT_PATH>.controller.<NAME>" xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc"> <Page> <content> <DatePicker id="myDatePicker" value="{ path: 'viewmodel>/date', type: 'sap.ui.model.type.Date', formatOptions: { UTC: true }}" valueStateText="{viewmodel>/valueStateText}" minDate="{viewmodel>/dateMin}" maxDate="{viewmodel>/dateMax}"/> </content> </Page> </mvc:View>
/*global location*/ sap.ui.define([ "<PROJECT_PATH>/controller/BaseController", "sap/ui/model/json/JSONModel", "sap/ui/model/type/Date" ], function( BaseController, JSONModel, TypeDate ) { "use strict"; return BaseController.extend("<PROJECT_PATH>.controller.<NAME>", { /** * @class Controller * @summary Your controller */ onInit: function() { this.oViewModel = new JSONModel({ date: undefined, dateMin: undefined, dateMax: undefined, valueStateText: undefined }); this.getView().setModel(this.oViewModel, "viewmodel"); //do sth. then set new validation this._setValidationRule(); }, /** * @memberOf Controller * @description Set sap.ui.model.type.Date based on other runtime variables */ _setValidationRule: function() { var oi18n = this.getResourceBundle(), //only works with BaseController.js oDateMin, oDateMax, sDateMin, oTypeDate; //set min and max date oDateMin = new Date(); oDateMax = new Date(); //set min and max date for the sap.m.DatePicker control this.oViewModel.setProperty("/dateMin", oDateMin); this.oViewModel.setProperty("/dateMax", oDateMax); //sap.ui.model.type.Date with min and max date oTypeDate = new TypeDate({ UTC: true }, { minimum: oDateMin, maximum: oDateMax }); //set personalised valueStateText sDateMin = oTypeDate.formatValue(oDateMin, "string"); this.oViewModel.setProperty("/valueStateText", oi18n.getText("personalisedValueStateText", [sDateMin])); //bind the value to pass the new sap.ui.model.type.Date definition var oDatePicker = this.getView().byId("myDatePicker"); //only works with BaseController.js oDatePicker.bindValue({ path: "viewmodel>/date", type: oTypeDate }); } }); });