INASOFT 管理人のひとことフリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。 2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。 ・INASOFT Webサイト: https://www.inasoft.org/ ・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/ 2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32] Tweet ■JavaScriptで「1時間後」を求めたかった。2013年 5月18日(土) 0:00:00 [さくらのブログから転記] |
RSS配信中 | |
ちょっと手元で使いたいブラウザツールがありまして、次のようなことをしたいと思いました。 ・現在日時を yyyyMMDDHH 形式で表示する。 (2013/5/17 05:39:10 ならば、 "2013051705" と表記する) ・その1時間後を求め、その表記にする。 (つまり、"2013051706" とする) JavaScriptで、これをお気軽に行う方法は、どのようなものになるか。 乗り越えるべき課題は2つ。 ・JavaScriptで「1時間後」を求める方法。なるべくスマートに。 ・JavaScriptで「ゼロパディング2桁」の数値を文字列で表示する方法。なるべくスマートに。 ネットで検索したところ、1時間後を求める方法はいくつかあるみたいですね。 代表的なものとしては、汎用的な時間計算方法として、setTime/getTime を使う方法。 これは、1ミリ秒単位の数値としてDate型の値を保持するので、「1時間後」を求めたいなら、 d = new Date(); d.setTime(d.getTime()+1*60*60*1000); とでもやればよいのかな。 でもまぁ、わざわざミリ秒単位で計算しなくても「時」の単位だけ編集すれば良いので、次のような書き方が一番スマートだろうか。 d.setHours(d.getHours()+1); これならば、例え「24時」とか「25時」みたいな表記が現れてしまっても、自動的に「翌日の0時」「翌日の1時」に補正してもらえる。ここらへん、最新の言語バンザイって感じ。 (JavaScriptは最新の言語じゃないけど……。オッサンでごめんなさい) 次に、「ゼロパティング2桁」(1を"01"と表記する等)を実現する方法。 これは、ググるといくつか手法が出てきますね。一番スマートだと思ったのは、文字列として左に"0"を付加したものについて、右からsubstring的な方法で2文字取ってくる方法。 これならば、 「1」⇒左に"0"を付加⇒「"01"」⇒うしろから2文字取得⇒「"01"」完成 「12」⇒左に"0"を付加⇒「"012"」⇒うしろから2文字取得⇒「"12"」完成 といった感じで、みごとにゼロパティング2桁が完成するわけで。 以上をまとめると、目的を達成するためのJavaScriptは、次のようになるでしょうか。 d = new Date(); d.setHours(d.getHours()+1); form1.yyyymmddhh.value = "" + d.getFullYear() + ("0"+(d.getMonth()+1)).slice(-2) + ("0"+d.getDate()).slice(-2) + ("0"+d.getHours()).slice(-2); あ、getMonthが、0~11の値をとるというのは有名な注意事項ですね。 あと、getFullYear() は、古いブラウザではサポートされていないので注意が必要。ここらへんも有名な注意事項かな。 目次の表示: ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメール、フィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。 当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。 |
- 最近の更新 - |
|
3212439 (+0136)[+0214] Copyright© 2010-2024 INASOFT |