1

これをより効率的にどのようにプログラムしますか?

if( randomYear%4==0 ) { 
    if( randomYear%100==0 ) {
        if( randomYear%400==0 ) {
            randomDay = 1 + Math.floor(Math.random()*29);
        }
        else {
            randomDay = 1 + Math.floor(Math.random()*28);
        }
    else{
        randomDay = 1 + Math.floor(Math.random()*29);
    }
else{
    randomDay = 1 + Math.floor(Math.random()*28);
}

まず、math.floor を使用しています。これは、0 を含み、1 を除外しているためです。これが私が探しているものです。これの目的は、変数「ran​​domYear」がうるう年であり、2 月に適切な日があるかどうかを判断することです。

私は主にすべてのif文とelse文について心配しています。ところで、私はJavascriptを使用しています。どうもありがとうございます!!

4

4 に答える 4

5

数学さえ必要ありません:

var tmp = new Date(year,1,29); // attempt to get February 29th
isleapyear = (tmp.getMonth() == 1);
于 2013-06-02T02:15:43.470 に答える
1

これはどう?

var maxDays = 28;
if (randomYear%4 == 0 && (randomYear%100 != 0 || randomYear%400 == 0)) {
    maxDays = 29;
}
randomDay = 1 + Math.floor(Math.random() * maxDays);
于 2013-06-02T02:07:04.047 に答える
1

サードパーティのライブラリを含めても問題ない場合は、次のライブラリを試してください。

http://momentjs.com/

そして、あなたはただすることができます:

moment([2000]).isLeapYear() 

2000年がうるう年かどうかを確認すると、適切なロジックを実行できます。また、検証 API を使用して、特定の年の 2 月 29 日が存在するかどうかを確認できます。

于 2013-06-02T02:12:39.147 に答える