MVCからC#DateTimeを受け取る関数がJavaScriptにあります。日付がnullの場合は「-」を返し、有効な日付の場合は書式設定された日付を返します。
重要:C#から別の形式で日付を送信することはできません。
Javascript:
function CheckDate(date) {
if (date == "Mon Jan 01 0001 00:00:00 GMT+0000 (GMT Daylight Time)")
return "-";
else {
var dat = new Date(date);
return dat.getFullYear() + dat.getMonth() + dat.getDay();
}
日付がC#New DateTimeであるかどうかを比較するより良い方法はありますか?
また、「yyyy/MM/dd」形式で日付を解析して返すにはどうすればよいですか?
行き詰まっている出力を考えると、javascript側でDateTime
の0をキャッチするより良い方法は考えられません。
_Date.parse
_は解析のニーズに対応するはずですが、ミリ秒数を返すため、Dateコンストラクターでラップする必要があります。
_var date = new Date(Date.parse(myCSharpString));
_
返却日については、単に
_date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate() + 1);
_
(_date.getMonth
_および_date.getDate
_は1インデックスではなく0インデックスです。)
フィドル: http://jsfiddle.net/GyC3t/
[〜#〜] edit [〜#〜]JoeBのキャッチのおかげで、修正させてください。 date.getMonth()
関数のインデックスは0ですが、date.getDate()
関数のインデックスは1です。 date.getMonthは現地時間(UTCより前)で機能するため、フィドルは+1で「機能」していました。ドキュメントを適切に確認せず、1を追加しただけで、フィドルで機能しました。
これを行うより適切な方法は次のとおりです。
返却日については、単に
_date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getUTCDate());
_
(_date.getMonth
_は0でインデックス付けされ、_date.getDate
_は1でインデックス付けされますが、タイムゾーンの違いの影響を受けやすくなります。)
次を使用して、JavaScriptの日付をC#に渡します。
var now = new Date();
var date = (now.getTime() / 86400000) - (now.getTimezoneOffset() / 1440) + 25569;
したがって、C#からミリ秒数を取得する場合、次のようになります。
var csharpmilliseconds;
var now = new Date();
var date = new Date((csharpmilliseconds + (now.getTimezoneOffset() / 1440) - 25569) * 86400000);