質問
次のように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つの優れた記事も書いています。
- http://yuiblog.com/blog/ 2009/02/11 / date-formatting-pt1-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);