質問

次のようにYahoo UIからカレンダーを使用しています:

  

calDate =(calDate.getMonth()+ 1)+   '/' + calDate.getDate()+ '/' +   calDate.getFullYear();

これは、 MMDDYYYY 形式を表示します。

この形式を YYYY-MM-DD に変更して、MySQLデータベースに挿入できるようにします。 コードを次のように変更しました。

  

calDate = calDate.getFullYear()+ '-'   +(calDate.getMonth()+ 1)+ '-' + calDate.getDate();

動作しましたが、問題は、選択した日付を変更するときに、カレンダーに日付が表示されず、代わりに NAN が表示されることです。

役に立ちましたか?

解決

日付をサーバー側に挿入する直前に日付の形式を変更し、クライアント側に必要な形式を設定して、後で日付を変更する必要があります。

他のヒント

通常、日付をUNIXタイムスタンプとしてバックエンドに渡し、データベース自体で変換するのが最善です。サーバーのPOSTデータを作成するコードでは、次のようなものを渡します。

var t = calDate.getTime()/1000;

1000での除算に注意してください。これは、javascriptのタイムスタンプがミリ秒単位であるのに対して必要です。MySQLでは秒単位です。

SQLステートメントで、タイムスタンプをそのまま渡し、FROM_UNIXTIME関数を使用して必要な形式に変換します。

INSERT INTO ... VALUES ( FROM_UNIXTIME($t), ...)

当然、バックエンドスクリプトで t をjavascriptから $ t に変換し、それをSQLに渡すコードが間にあります。

今、本当にフロントエンドで日付をフォーマットする必要がある場合、便利な YAHOO.util.Date ユーティリティを利用できます。このようなことをしてください:

alert(YAHOO.util.Date.format(calDate, {format: "%Y-%m-%d" }));

getFullYear、getMonth 、および getDate

を呼び出すよりもはるかに簡単

bluesmoonは、日付の書式設定に関するYUIBlogに関する2つの優れた記事も書いています。

  1. http://yuiblog.com/blog/ 2009/02/11 / date-formatting-pt1-2 /
  2. http://yuiblog.com/blog/2009/ 02/25 / date-formatting-pt2 /

-Eric

            cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "-");

            cal1.cfg.setProperty("MDY_YEAR_POSITION", 1);
            cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
            cal1.cfg.setProperty("MDY_DAY_POSITION", 3);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top