6

JavaScriptのdate.getMonth()とdate.getUTCMonth()を使用すると、一貫性のない結果が見つかりましたが、一部の日付のみが含まれています。次の例は、問題を示しています。

<!DOCTYPE html>
<html>
<body onload="myFunction()">

<p id="demo">Click the button to display the month</p>

<script type="text/javascript">
function myFunction()
{
var d = new Date(2012, 8, 1);
var x = document.getElementById("demo");
x.innerHTML=d;
x.innerHTML+='<br/>result: ' + d.getMonth();
x.innerHTML+='<br/>result UTC: ' + d.getUTCMonth();

}
</script>

</body>
</html>

この例の出力は次のとおりです。

Sat Sep 01 2012 00:00:00 GMT+0100 (Hora de Verão de GMT)
result: 8
result UTC: 7

日付を(2012、2、1)に変更すると、出力は次のようになります。

Thu Mar 01 2012 00:00:00 GMT+0000 (Hora padrão de GMT)
result: 2
result UTC: 2

最初の例では、getMonthは7を返し、getUTCMonthは8を返します。2番目の例では、両方が同じ値2を返します。

誰かがすでにこの状況を経験していますか?私はポルトガル出身で、GMTに関係があると思いますが、例が同じ状況で実行されているため、なぜこれが発生しているのかわかりません。

よろしくお願いします

4

3 に答える 3

1

UTC日付の操作には、協定世界時の日付メソッドが使用されます

日付は0から11の新しい日付(1976、01、18)の月を返します-1976年2月18日水曜日00:00:00 GMT + 0530(インド標準時)

* getUTCDateはgetDate()と同じですが、月と年と同じワールドタイムゾーンに基づいて日付を返します

new Date(1976、01、18).getUTCDate()-17

new Date(1976、01、18).getDate()-18

new Date(1976、02、18).getUTCMonth()-2

new Date(1976、01、18).getMonth()-1

new Date(1976、01、18).getYear()-76

new Date(1976、01、18).getUTCFullYear()-1976

new Date(1976、01、18).getFullYear()-1976

于 2020-06-10T06:54:16.120 に答える
0

DSTの違いが原因であることがわかります。

于 2012-08-07T13:55:46.913 に答える
0

タイムゾーンによっては、コンソールログが異なる場合があることがわかります。月の最初の「01」を選択したのは、デフォルトの午前0時の時刻「00:00:00」が与えられるためです。これにより、一部のタイムゾーンで3月ではなく2月が生成されます(完全なスクープはここで入手できます:https:/ /developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse):

let date1 = '2019-03-01'; // defaults to UTC
let date2 = '2019-03-01T14:48:00'; // LOCAL date/time


let dt1 = new Date(date1);
let dt2 = new Date(date2)


let month1 = dt1.getMonth();
let month2 = dt2.getMonth();

console.log("mon1: " + month1);
console.log("mon2: " + month2);
于 2021-10-17T14:40:49.580 に答える