current_date
カレンダーから日付を選択するために実行するコードがありますが、上記のカレンダーのサーバーの日付に設定したいと思います。に匹敵する機能を備えていclient_date
ますserver_date
。
4 に答える
それは可能です。他の場所で提案されているように、次の 2 つの理由から日付を文字列に変換する必要があります。
- バグを検索するときに読みやすく/理解しやすい
- 「現在時刻」はクライアントとサーバーで常に異なります
現在の日付をクライアントに送信するには、非表示のフォーム フィールド、AJAX リクエスト、Web サービス、REST、JSON、JSONP などを使用できます。
日付を比較するには、文字列をオブジェクトに変換してからDate
、通常の方法を使用してそれらを比較します ( compareTo()
Java<
では==
、>
JavaScript では , )。
次の方法を使用してそれを行うことができます。
Javaで
public class YourJavaClass{
public static String getServerDate()
{
Calendar cal = Calendar.getInstance();
return cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.MONTH) + "-" + cal.get(Calendar.DATE);
}
}
jspで
$('input.datepicker').datepicker(
{
minDate : new Date(<%out.print(YourJavaClass.getServerDate());%>)
});
これを行う1つの方法は、サーバースクリプトからテンプレートに現在の日付を渡すことです。これにより、ページがレンダリングされるときに、javascriptがそれにアクセスして比較を行うことができます。これには明らかな問題があります。ユーザーが翌日までページを開いたままにしておくと、日付が古くなります。
もう1つの方法は、バックエンドへの非同期呼び出しを使用して、そこから日付を取得することです。
最も簡単な方法は、両方の日付と会話をミリ秒で比較することです。どちらの言語もそのためのメソッドを提供します。
Javascript:
<script type="">
var myDate = new Date();
var milliseconds = myDate.getTime();
</script>
Java (JSP):
<script type="text/javascript">
<%!
Date myJavaDate = new Date();
long myJavaMilliseconds = 0L;
myJavaMilliseconds = myJavaDate.getTime();
%>
var myJavaMillisondsInJs = <%= myJavaMilliseconds %>;
</script>
/* これらの日付を比較するコードをここに入力します */
サーバー側のデータを比較したい場合は、Ajax またはフォームを介して Javatime をサーバーに送信する必要があります。