2017-09-03 8 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

btw、個人的には、このタイムゾーンの問題を解決するためにUI5に特別なデータ型を作成しました。データバインディング(つまり、カスタムデータ型を使用する日付プロパティにバインドされているDatePicker)とともに使用します。もしあなたが私がここでそれを共有することができます。オフセット差し引きで独自に修正することもできます。 –

+0

[Odataサービスから日付/時刻をUIに正しく追加する方法]の複製がありますか?(https://stackoverflow.com/questions/47593990/how-to-add-date-time-from-an-odata- – 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*を使用している場合、正しく日付を扱うの世話をします。

  • 表示formatOptionsUTC: trueを追加することにより、UTCの日付。
  • isDateOnlyconstraintsに追加することで、の日付を保存します。

    真の、唯一の日付部分を使用する場合は、時刻部分は常に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文字列を解析に違反しました。
  2. 内部で使用されているdatajsは、バックエンドに送信される前に適切にformats the dateです。
関連する問題