2017-06-02 11 views
1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYearから:Date.prototype.getUTCFullYear()は2000年にどのように準拠していますか?

getUTCFullYear()によって返された値は、2000年に準拠した絶対数で、例えば、1995年

それは「year-に準拠するように何を意味します2000年?

+0

https://stackoverflow.com/a/98162/1823841:しかし、それは実際の年を返します。 –

答えて

0

"2000年に準拠している"とは、単に "Y2Kバグ"のために問題を引き起こさないということです。

単純に言えば、2桁の数字ではなく4桁の数字を返すということで、何世紀にもわたる曖昧さはありません。

0
The value returned by getUTCFullYear() is an absolute number that is compliant with year-2000, for example, 1995. 

この文は、数は、正の0以外でなければならないことを意味し、それが相互のために書くことがなければなりません(たとえば1998,1999,2000のために、年-2000に準拠し、NO 98,99,00)

0

「2000年に対応する」というフレーズは誤解を招く可能性があり、削除する必要があります。

最初に、ECMAScriptはgetYearと呼ばれる方法で実装され、1900年の2桁の年を返したため、1995年は95として、2017は117として、1832は-68として返されました。このメソッドは、Webブラウザの場合にのみappendix of ECMA-262に移動され、後方互換性のために維持されています。新しいコードでは使用しないでください。

getYearメソッド方法は今少し奇妙に見えるが、それは簡単に「Y2K」問題1900

を追加することにより、通期に転換したが2桁の年として2000年1月1日後に問題になったということです1/1/00のような日付は、1/1/2000が意図されたときには1/1/1900と解釈されます(2桁の年の場合もそうです)。 new Date(0,0,1)は1/1/1900の日付であり、1/1/0000ではないため、この問題は解決しません。

これは2000年(Y2K)の現実の問題で、今年は得られません。

-99と+99の間の日付を作成するには、通年を設定する必要があります。 1月1日あなたがする必要がある23:

var d = new Date(); 
d.setFullYear(23,0,1); 

getFullYear(およびgetUTCFullYear)に関しては、それはそれはないおおよそ1970年から285616を±される任意の年になることができ、通年返しますそれ自体はY2Kの問題を回避する。

var d = new Date(); 
 
d.setFullYear(23, 0, 1); 
 
console.log(d.getYear());  // -1877 
 
console.log(d.getFullYear()); // 23

関連する問題