2017-09-03 43 views
1

我在UI5應用程序中有DatePicker。我的服務器在澳大利亞。當我在IST時間創建任何記錄時,它工作正常。但是,當用戶試圖在澳大利亞創建任何記錄時,日期值將增加1.即"31""32"。我需要考慮時區嗎?UI5中的日期不匹配應用程序

+0

請檢查這個帖子https://stackoverflow.com/questions/10087819/convert-date-to-another-timezone-in-javascript。並在這個答案關於http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/6016329。 – n01dea

+0

順便說一句,我已經在UI5中創建了一個特殊的數據類型來解決這個時區問題,我將它與數據綁定一起使用(即DatePicker綁定到使用自定義數據類型的某個日期屬性)。如果你想我可以在這裏分享。您也可以通過偏移減法自行修復它。 –

+0

[如何從Odata服務正確添加日期/時間到UI中?](https://stackoverflow.com/questions/47593990/how-to-add-date-time-from-an-odata-服務正確進入UI) – boghyon

回答

0
prepareDatesToDisplay: function(oDate){ //to display dates from backend 
       var oTempDate = new Date(oDate); 
       oDate = new Date(oTempDate.getTime() + oTempDate.getTimezoneOffset() * (60000)); 
       return oDate; 
    }, 
    changeDateToUTC: function(oDate){ //for sending dates to backend 
       var oTempDate = new Date(oDate.setHours("00","00","00","00")); 
       oDate = new Date(oTempDate.getTime() + oTempDate.getTimezoneOffset() * (-60000)); 
       return oDate; 
    }, 
0

UI5已經照顧妥善處理日期,如果你在你的DatePickervalue綁定定義使用綁定類型sap.ui.model.odata.type.Date*

  • 顯示通過添加UTC: trueformatOptions在UTC的日期。
  • 商店加入isDateOnly: trueconstraints在UTC日期。

    如果使用真實的,只是日期部分,時間部分始終是00:00:00,時區是UTC 避免時區相關的問題

sap.ui.getCore().attachInit(() => sap.ui.require([ 
 
    "sap/ui/model/odata/v2/ODataModel", 
 
], ODataModel => sap.ui.getCore().getMessageManager().registerObject(sap.ui.xmlview("myView", { 
 

 
    // VIEW 
 

 
    viewContent: `<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"> 
 
    <DatePicker id="myDatePicker" 
 
     binding="{ 
 
     path: '/Employees(1)', 
 
     parameters: { 
 
      select: 'EmployeeID, HireDate' 
 
     } 
 
     }" 
 
     value="{ 
 
     path: 'HireDate', 
 
     type: 'sap.ui.model.odata.type.DateTime', 
 
     formatOptions: { 
 
      UTC: false 
 
     }, 
 
     constraints: { 
 
      isDateOnly: true, 
 
      displayFormat: 'Date' 
 
     } 
 
     }" 
 
     width="12rem" 
 
    /> 
 
    </mvc:View>`, 
 
    
 
    // MODEL 
 
    
 
}).setModel(new ODataModel({ 
 
    serviceUrl: "https://cors-anywhere.herokuapp.com/services.odata.org/V2/Northwind/Northwind.svc/", 
 
    defaultBindingMode: "TwoWay", 
 
    tokenHandling: false, 
 
})).placeAt("content"), true)));
<script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" id="sap-ui-bootstrap" 
 
    data-sap-ui-libs="sap.ui.core, sap.m, sap.ui.unified" 
 
    data-sap-ui-theme="sap_belize" 
 
    data-sap-ui-preload="async" 
 
    data-sap-ui-compatVersion="edge" 
 
    data-sap-ui-xx-waitForTheme="true" 
 
></script><body id="content" class="sapUiBody sapUiSizeCompact"></body>

  1. 的結合類型,只要解析天然JS日期對象,並將其存儲在模型傳入Emd.DateTime字符串作爲約束 AREN沒有違反
  2. datajs在內部使用,formats the date在發送到後端之前正確使用。