JavaScriptを学んだはいいものの、これから何をしたらいいのかわからなくて路頭にさまよってるそこのあなた!
とりあえず、簡単なモノから作って行きましょう♪
ということで今回は「時計」を作りながら、Dateオブジェクトをマスターしましょう٩( ‘ω’ )و
今、何時!?
そーね、だいたいねぇ〜〜∑(゚Д゚)!
今、何G!?
ちょっと待ってて〜5Gぃぃ〜∑(゚Д゚)!
Dateオブジェクトとは?
Dateオブジェクトとは、日時を表示する時に使う「予め用意されているオブジェクト」です。
世界基準で決められた協定世界時 (UTC) 1970年1月1日から、何秒経過しているか?を機械が調べて日時を表示してくれます。
使い方は簡単で、Date( )を呼び出し、newで生成してあげるだけで現在時刻を表示してくれます。
実際に試してみましょう٩( ‘ω’ )و
時計を表示させよう
現在時刻を表示する
左のJSがJavaScript、右のResultが結果画面となります。(HTMLを使わず記入しています)
See the Pen
Date1 by hotokeT.T (@hotoke7676)
on CodePen.
解説:Dateオブジェクトを生成
new Date( )で現在時刻を生成し、dateという変数の中に入れます。
そして、そのdateをdocument.writeでブラウザに表示すればOKです♪
ちょっとわかりづらいですが、
曜日/月/日/年/時/分/秒/で表示されているのがわかりますか?
この日時はあなたがこのページを開いた瞬間の時刻です。
なので、更新ボタンを押してこのページを更新すると表示されている時刻が変わります。
おぉーすごい!本当に時間が変わった!
思ったより、簡単だな!
では、もう少し違う使い方もしてみましょう( ´∀`)
一部の情報だけ取得する
See the Pen
Date2 by hotokeT.T (@hotoke7676)
on CodePen.
解説:一部の情報だけ取得する
date.get◯◯で年や月だけ取り出す事も出来ます。
注意する点としては、
・月は1月を0と数え、1月(0)~12月(11) の数値で表示
・曜日は日曜日(0)~土曜日(6)までの数値で表示
なので、「現在の月-1」と「数値での曜日」で表示されている事がわかります。
という事は、月には常に+1して、曜日は日曜〜土曜日まで予め対応する数値と関連付けする処理をしておかないといけないのか。めんどくさ〜!!
そこで!toLocaleString( )メソッドの出番です٩( ‘ω’ )و
toLocaleString( )メソッド
toLocaleString( )メソッドは、勝手に使用言語(日本語とか英語とか)を判断し、文字列として数値を返してくれるメソッドです。
See the Pen
Date3 by hotokeT.T (@hotoke7676)
on CodePen.
だいぶスッキリとした表示になりましたね( ^ω^ )
解説:toLocaleString( )メソッドで見やすく表示する
date.toLocaleString( )とするすだけで表示が、「年/月/日 時:分:秒」に変化します。
変化する内容は次の通り↓
・月が+1され、ちゃんと今月が表示される
・曜日を表示しなくなる
残念ながら曜日は対応してくれませんが、「表示しなくなる」というのも意外と便利なのです。なぜなら、曜日を必要としない場合も多く、必要な時だけ.getDay( )で取得すればいいわけですから。
もう表示するなら基本これを使った方が良さそうだな♪
時計をリアルタイムで動かそう
時計の表示が出来たら、次は時計を動かしていきます( ^ω^ )
1秒ずつ動かす
今回はHTMLも必要な為、↓でHTMLとJSを切り替えてご覧下さい。
See the Pen
Date4 by hotokeT.T (@hotoke7676)
on CodePen.
※アロー関数で表記していますが、「( ) =>」と「function( )」は同じです
おいおい、一気にコードが増えたなぁ。
ぶーぶー!
大丈夫!!1つ1つ見ていきましょう٩( ‘ω’ )و
解説:間隔をセットする
「setInterval」は、一定時間ごとに特定の処理を繰り返すという働きがあります。(間隔をセットする)
今回でいう処理は「日付を取得し、HTMLと関連付けて表示する」で、間隔の数値は1秒なので1000となります。(ミリ秒単位なので1秒は1000ミリ秒)
しかし、このままだと「表示の上書き」をするわけではないので、
2020/5/28 23:02:01 2020/5/28 23:02:02 2020/5/28 23:02:03 2020/5/28 23:02:04 ・・・・と、1秒ごとに余計な日付ごと増え、エンドレスでテキストが増え続けていってしまいます。
解説:表示の上書き
それを防ぐ為に今回はHTMLでdivを作り、中身だけを更新されていくように作りました。
HTMLとの関連付けは「document.getElementById(“◯◯”)」でidを取得し、「.innerHTML」で中身が更新されていくようにします。
難しく感じた場合は1つ1つバラして実際に表示させて見てね♪
HTMLの読み込みが終わってからJavaScriptを実行するようにする
2、<body>内のどこかに記述
3、<body>内の一番最後に記述(現在推奨されている)
See the Pen
Date5 by hotokeT.T (@hotoke7676)
on CodePen.
やったー!出来た!
だけど、この時計どんな時に使うのかな?
イマイチ想像できん。
どんな時にDateオブジェクトは使われる??
日時を使った処理は意外と多く使われています。
例えば、
「ツイート(書き込み)をした時間」を保存しておき、いつ投稿されたかわかるように表示しておく。
さらに「現在時間」も取得し、「現在時間ー投稿した時間」で投稿から何時間経過しているかを表示する機能。
ショッピングサイトのセール期間や元旦などに使われるカウントダウンタイマー。
現在時刻を取得し、「終了時刻ー現在時刻」でカウントダウンタイマーを表示出来ます♪
なるほどなぁ。じゃあ、オリンピックまであと何日と何時間!
みたいのをもうあなたは作れるって事だな!
いつ開催されるかがわかればね(°▽°)
あなたの余命を表示するカウントダウンタイマーとか作っちゃおうかな?
仏くんが言うと本気で恐いからやめて!知りたくないし∑(゚Д゚)!!
コメント