2016-04-19 4 views
0

私は、クレジットカードの有効期限を確認し、アラートを表示する機能を作成しています。このため、私は新しいDate()を使用して集計しましたが、JSはクライアント側で実行されるため、クライアントマシンの日付が表示されることに気付きました。サーバ側の日付を取得する方法

サーバー側から日付を取得してから、クライアント側でクレジットカードの有効性を確認する必要があります。どうやってやるの ?

+1

何らかの方法でページにサーバーの日付を出力するか、AJAX応答を作成する必要があります。 – casraf

答えて

0

以前のプロジェクトでも同じ問題がありました。私たちはそれについて簡単な機能を作りました。バックエンドから来る文字列、新しいDate()をパラメータとしてとります。

var convertToDateWithoutClientOffset = function(dateString) { return new Date(dateString.substr(0, 4), dateString.substr(5, 2) - 1, dateString.substr(8, 2), dateString.substr(11, 2), dateString.substr(14, 2), dateString.substr(17, 2)); };

それは醜いですが、それは動作します。 たとえば、2016-04-18A11:00:00.000がパラメータとして返されます。この関数は、+3時間のタイムゾーンにあるため、Mon Apr 18 2016 11:00:00 GMT+0300 (FLE Daylight Time)を返します。

+0

Martinさん、ありがとうございます。しかし、サーバーコールをしていないときにサーバーの日付を返すことはできますか? – Ajax

+0

ああ、サーバーが特定の場所にあると仮定し、それに基づいて計算します。それは...ですか ? – Ajax

+1

私はあなたがUTCでDateTimeを持っていると仮定しているので、オフセットのためにクライアントでその日付を変換したくないです。 JavaScriptは、クライアントの日時オフセットに応じて受信した日付を自動的に変換します。だからこそ私たちはこの機能を使用しました。 –

0

最も簡単な方法は、AJAXリクエストをバックエンドにするためにhttps://docs.angularjs.org/api/ng/service/$httpを使用することです。より多くの例を参照するか、単に以下を使用するためにリンクをクリックしてください:

$http.get('/someUrl').then(successCallback, errorCallback); 

function successCallback(response) { 
    // server side date is returned here: 
    var serverAnswer = response.data; 
    ... 
} 

function errorCallback(response) { 
    ... 
} 

、返されるデータの必要な書式を設定するのを忘れ(はリンクページのHTTPヘッダ章の設定を参照)、または

を使用しないでください
$http.get('/someUrl', config).then(...) 

$ http作業の調査のため。

また、https://docs.angularjs.org/api/ngResource/service/$resourceを同じものとして使用することもできます(その使用法は$ httpの使用法よりも推奨されます)。

関連する問題