3

次の問題があります。サーバーから日付を受け取ったときに、datepicker でフォーマットしたいのですが、datepicker が例外をスローするため、日付を解析できません。これが私の日付です。サーバー(obj.value)から来ています: 08.20.2012 19:01:32 そして、これが私がこの日付を解析しようとするコードです: $.datepicker.formatDate('dd.MM.yy', new Date(obj.value)); 月の完全な名前が必要なため、MMを使用します。解析後の出力は次のとおり です。ではNaN.NaN.NaN 、この例外を取り除くにはどうすればよいでしょうか?

4

5 に答える 5

4

obj.value日付 ( ) を有効な JavaScript 日付形式に変更する必要があります。サーバー側でできるなら最高です。

クライアント側で実行したい場合は、に置き換える必要があるため.、の代わりに/取得します。08/20/2012 19:01:3208.20.2012 19:01:32

new Date(obj.value.replace(/\./g, '/'))
于 2012-08-21T10:33:03.640 に答える
1

JavaScript で日付を解析しようとしていますが、これは完全に実装に依存します。多くのブラウザーは、提供された文字列を解析できないようです。次の 2 つのいずれかを行う必要があります。

  • 有効な文字列を指定してください。
  • Date コンストラクターを呼び出します。

この回答も参照してください: Date.parse が正しくない結果を返すのはなぜですか?

于 2012-08-21T10:34:27.693 に答える
0

Date()受け取っintegersstringsのみ。obj に渡す前に値を処理する必要がありますDate()

于 2012-08-21T10:32:42.143 に答える
0

まず、受信日付文字列を javascript Date() 関数で解析可能なものに再フォーマットする必要があります。サーバーからのフォーマットを制御できない場合は、次の行に沿って何かを提案します

var incDate, dateString, timeString, dateSplit, timeSplit;
incDate = obj.value.split(" ");
dateString = incDate[0];
timeString = incDate[1];
dateSplit  = dateString.split(".");
timeSplit = timeString.split(":");
$.datepicker.formatDate('dd.MM.yy', new Date(dateSplit[2],dateSplit[0]-1,dateSplit[1],timeSplit[0],timeSplit[1],timeSplit[2]));
于 2012-08-21T11:02:48.640 に答える
0

サーバーから返される内容を制御できる場合、最も簡単な方法は、書式設定された日付文字列ではなく、UNIX タイムスタンプを返すことです。

UNIX エポックと Javascript エポックは同じ (1970 年 1 月 1 日 00:00) ですが、UNIX タイムスタンプは秒単位ですが、javascript のDateオブジェクトはミリ秒単位で動作します。

そう :

$.datepicker.formatDate('dd.MM.yy', new Date(obj.value * 1000));

HEREを見るとわかるように、obj.value は整数または文字列にすることができます。文字列の場合、JavaScript の自動型変換が乗算を処理します。

于 2012-08-21T10:39:07.477 に答える