Skip to main content

 

 

 

 
Language:

 

 
 
 
OutSystems

モバイルアプリでDateTimeがnull値の場合の動作

環境を初めてインストールしたときのPlatform Serverバージョンによっては、ローカルストレージの書き込み/読み取り時にモバイルアプリでDateTimeのnull値が変更される場合があります。また、サーバーへの送信時に変更される場合もあります。これは、DateTimeのnull値に関する問題が解決されたことによるものです。

#1900-01-01 00:00:00はDateTimeデータ型のnullに相当し、手動で割り当てるか、またはNullDate()ビルトイン関数を呼び出して返される値によって割り当てることができます。Platform Server 10.0.804.0以前では、DateTimeのnull値がnull値として扱われないという問題がありました。 このため、デフォルトの#1900-01-01 00:00:00#は他の日時の値と同様に動作していました。この問題が深刻になるのは、null値を保存して処理するモバイルアプリがある場合です。Webアプリケーションは影響を受けません。

OutSystemsでは、現在のPlatform Serverのすべてのインストールおよび今後のアップデートで以前の動作を維持することに決定されました。この動作を維持することにした理由は、開発者がすでに採用している可能性のある回避策に支障をきたさないようにするためです。詳細については、以下の各セクションをご覧ください。

Platform Server 10.0.804.0より前にインストールされた環境

DateTimeのnull値をローカルストレージから書き込んだりローカルストレージに保存したり、さらにはサーバーに送信したりする場合、日時はUTC時刻に対するタイムゾーンの時差に合わせて調整されます。

たとえば、ニューヨークにあるモバイルデバイスが変数myDateTimemyDateTime = NullDate()で初期化するとします。ローカルストレージに保存されるのは、UTC-5タイムゾーンがUTCに変換されるためmyDateTime = #1900-01-01 05:00:00#となります。この値をUTC+1のパリで読み取ると、戻り値は UTCからUTC+1に調整されるためmyDateTime = #1900-01-01 06:00:00#となります。システムにより、値はタイムゾーンの時差に合わせて調整されます。

これは、Platform Server 10.0.804.0より前にインストールされたすべての環境のモバイルアプリに適用されます。今後バージョン番号10.0.804.0以降にアップグレードしても同じです。

Platform Server 10.0.804.0以降の新規インストール

DateTimeのnull値をローカルストレージから書き込んだりローカルストレージに保存したり、さらにはサーバー上でやりとりしたりする場合、日時はnull値のままになります。

たとえば、ニューヨークにあるモバイルデバイスが変数myDateTimemyDateTime = NullDate()で初期化するとします。ローカルストレージに保存されるのは、UTC-5タイムゾーンがUTCに変換されないためmyDateTime = #1900-01-01 00:00:00#となります。この値をUTC+1のパリで読み取ると、戻り値 は同様にmyDateTime = #1900-01-01 00:00:00#となります。

これは、すべての新しい環境のバージョン番号10.0.804.0以降のインストールのモバイルアプリに適用されます。

DateTimeのnull動作の変更

DateTimeのnullをPlatform Server 10.0.804.0以降の新しいインストールでのDateTimeのnullのように動作させる場合は、このセクションの手順を参照してください。

この手順を実行するには、Platform Server 10.0.804.0以降を使用している必要があります。

オンプレミス環境の場合

独自のインフラにPlatform Serverをデプロイしている場合は、以下の手順を実行します。

1.データベースのOSSYS_PARAMETERテーブルに対して、以下のクエリを実行します。 INSERT INTO ossys_parameter (NAME, VAL, HOST, HOST_SERIAL) VALUES ('Compiler.MobileRuntime.ApplyTZForNullDates', 'false', null, null); 1.サーバーでOutSystems Deployment Controller Serviceを再起動します。 1.影響を受けるモジュールをパブリッシュします。 1.変更が正常に適用されたことを確認します。

クラウド環境の場合

サポートに連絡して、プラットフォームの設定を変更するように依頼してください。