2011-02-04 15 views
1

次の式が無効なのはなぜですか?javascriptで日付が無効なのはなぜですか?

var hello = new Date(2010, 11, 17, 0, 0, 0, 0); 

たとえば、hello.UTC()は機能しません。

+1

UTCは、Dateコンストラクタ自体のメンバーではなく、Dateインスタンスのメンバーであるように思われる –

+0

質問はしてやるべきことがありますJavaScriptがどのようにOOP私は思いますか – kjy112

答えて

3
var hello = new Date(2010, 11, 17, 0, 0, 0, 0); 
console.log(hello.toUTCString()); 

var hello2 = Date.UTC(2010, 11, 17, 0, 0, 0, 0); 
console.log(hello2); 

これら二つは、実際に異なるものをプリントアウトする2つの異なる機能です。

toUTCString()は - 普遍的な時間に応じて、文字列にDateオブジェクトを変換し

Date.UTC()として

- ユニバーサルによると、1970年1月1日の真夜中から日付文字列にミリ秒数を返します。時間。

01-1970の真夜中から日付文字列のミリ秒を計算しようとしている場合は、Date.UTC();を使用する必要があります。しかし、新しい日付(2010、11、17、0、0、0、0)のプロパティを異なる形式で取得しようとしている場合。独自のコンストラクタメソッド(toUTCString()またはgetUTCMilliseconds()など)を使用する必要があります。

UTCは、Dateインスタンスのメンバではなく、Dateコンストラクタ自体のメンバであるようです。したがって、UTCを呼び出すには、 Date()を現在時刻を文字列に変換する必要があります。Date.UTC()は、1970年1月1日からのミリ秒単位で計算された値を取得して使用します。00:00:00世界時(UTC) 。したがって、それらは「静的」な機能のようです。

さらに、'new'キーワードを使用して新しいオブジェクト(インスタンス化)を作成するたびに、コンストラクタのthis値は新しいオブジェクトを指します。だから、こんにちは、Date()またはDate.UTC()の反対thisに反対する独自の日付を持つことができます1月1日-1970 00:00:00または返品に基づいて計算を行う別のスコープ(グローバル私は思う)を指しているかDate関数が呼び出された時刻。一方、オブジェクトhelloは、構築されたメソッドのセット(toUTCString();など)でnew Date(2010, 11, 17, 0, 0, 0, 0)でインスタンス化された基本日付を持ちます。 thisの新しいDateは、渡されたプロパティをベースの "date"値として使用して新しいObjectを指します。

これらのことはすべて、hello.UTC()は、そのコンストラクタのメンバーではない関数にアクセスしているため、機能しません。これはJavaScriptのOOPの一部です。これは私の頭の上にあり、あなたがこれを読んでいるならば、おそらくちょっとばかだ。私にエラーがある場合は私を修正してください。

1

これは私の作品:

var hello = new Date(2010, 11, 17, 0, 0, 0, 0); 
window.alert(hello.toUTCString()); 
関連する問題