Java 日付・時刻の計算 加算・減算が簡単に

Chat&Messenger - チャット & メッセンジャーでビジネスが加速する -
IP Messenger 互換。チャット、メッセンジャー、テレビ会議、スケジュール、文書共有、キャプチャを統合したフリーソフト

Java 日付・時刻の計算 加算・減算が簡単に

Java 日付・時刻の計算 加算・減算が簡単に

 Java で簡単に日付・時刻の加算・減算を計算するサンプルプログラムを紹介します。
サンプルプログラムの特徴は以下となります。

  • 現在、または任意の日付・時刻から指定の時間量を加算・減算した結果を返します。
  • プラスの数値を指定した場合時間を進め、マイナスの場合は戻します。
    たとえば、現在の日付時刻から 10 日前を計算する場合は以下となります。
    Calendar cal = addMonth(-10);
  • 年、月、日、時間、分、秒、ミリ秒の各時間フィールドに対し、任意の時間量を設定できます。
    また、指定の時間から相対的に計算する場合は、引数にCalendarクラスを渡す。
    たとえば、以下では指定のCalendarインスタンスから1年進めることになります。
    Calendar cal = add("指定のCalendar",1,0,0,0,0,0,0);
  • 各時間フィールドの値がその範囲を超えた場合、次の大きい時間フィールドが増分または減分されます。
    たとえば、以下では現在時刻から1時間と5分進めることになります。
    Calendar cal = addMinute(65);

メソッドの概要


メソッドの概要
static java.util.Calendar add(Calendar cal, int addYera, int addMonth, int addDate, int addHour, int addMinute, int addSecond, int addMillisecond)
現在、または任意の日付・時刻から指定の時間量を加算・減算した結果を返します。
static java.util.Calendar addYera(int addYera)
現在の日付・時刻から指定の【年数】を加算・減算した結果を返します。
static java.util.Calendar addMonth(int addMonth)
現在の日付・時刻から指定の【月数】を加算・減算した結果を返します。
static java.util.Calendar addDate(int addDate)
現在の日付・時刻から指定の【日数】を加算・減算した結果を返します。
static java.util.Calendar addHour(int addHour)
現在の日付・時刻から指定の【時間】を加算・減算した結果を返します。
static java.util.Calendar addMinute(int addMinute)
現在の日付・時刻から指定の【分】を加算・減算した結果を返します。
static java.util.Calendar addSecond(int addSecond)
現在の日付・時刻から指定の【秒】を加算・減算した結果を返します。

サンプルプログラム


実行

 サンプルプログラムでは、リターン値として計算後の日付を保持する java.util.Calendar オブジェクトを取得できますので、java.util.Calendar#getTime()メソッドにより、java.util.Dateに変換し java.text.SimpleDateFormat により日付文字列に変換しています。

◆実行例
public static void main(String[] args) {

SimpleDateFormat f = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
System.out.println("現在   の日付・時刻 = "+ f.format(add(null,0,0,0,0,0,0,0).getTime()));
System.out.println("1年後  の日付・時刻 = "+ f.format(addYera(1).getTime()));
System.out.println("1ヶ月前 の日付・時刻 = "+ f.format(addMonth(-1).getTime()));
System.out.println("3時間後 の日付・時刻 = "+ f.format(addHour(3).getTime()));
System.out.println("30時間前の日付・時刻 = "+ f.format(addHour(-30).getTime()));
System.out.println("40分後 の日付・時刻 = "+ f.format(addMinute(40).getTime()));
System.out.println("80秒後 の日付・時刻 = "+ f.format(addSecond(80).getTime()));
System.out.println("1ヶ月前から、4日後の日付・時刻 = "+ f.format(add(null,0,-1,4,0,0,0,0).getTime()));

}
◆実行結果
現在の日付時刻は 2008/03/25 00:00:00 とします。
現在   の日付・時刻 = 2008/03/25 00:00:00
1年後  の日付・時刻 = 2009/03/25 00:00:00
1ヶ月前 の日付・時刻 = 2008/02/25 00:00:00
3時間後 の日付・時刻 = 2008/03/25 03:00:00
30時間前の日付・時刻 = 2008/03/23 18:00:00
40分後 の日付・時刻 = 2008/03/25 00:40:00
80秒後 の日付・時刻 = 2008/03/25 00:01:20
1ヶ月前から、4日後の日付・時刻 = 2008/02/29 00:00:00
※2008年は閏年のため2月の月末日付は29日となります。

このサンプルプログラムは Chat&Messenger の「カレンダー・スケジュール管理機能」で実際に利用しています。


ページトップへ
ダウンロード - ダウンロード詳細
更新履歴 - 更新履歴 2014 - 2015
応用編 - ショートカットキー一覧
その他 - プレミアムエディション
その他 - 確認されている問題点と解消方法
その他 - IP Messenger 互換について
インストール / Verup - インストール方法
インストール / Verup - バージョンアップ方法
Thanks Links・リンク集 - おすすめフリーソフトまとめ
インストール / Verup - バージョンアップ方法 インストール無し版
インストール / Verup - 初回起動時におけるWindowsファイアウォール
更新履歴 - 更新履歴 2011 - 2013
更新履歴 - 更新履歴 2009
インストール / Verup - インスートール方法 Mac OSX
インストール / Verup - JREのインストール方法
CAMServer - CAMServer 概要
CAMServer - CAMServer の導入方法
CAMServer - ライセンスのご購入
インストール / Verup - バージョンアップとリリースポリシー
CAMServer - 文書・ファイル共有
ダウンロード - 過去のバージョンのダウンロード
CAMServer - 外部ユーザ取得・ルータ超え
Thanks Links・リンク集 - Thanks Links
インストール / Verup - アンインストール方法
応用編 - バックアップ設定
CAMServer - クライアント利用制限
CAMServer - メッセージログのサーバ集中管理
CAMServer - オフライン時の Email 転送
CAMServer - CAMServer のバージョンアップ
ダウンロード - CAMServer のダウンロード
テレビ会議 / 音声通話 - テレビ会議・音声通話
CAMServer - CAMServer を Windows サービスとして起動
応用編 - パケット追跡について
テレビ会議 / 音声通話 - ヘッドセット・カメラの準備
テレビ会議 / 音声通話 - ヘッドセット・カメラの推奨商品
その他 - SaaS型 オンデマンド型サービスとして提供
その他 - よくある質問
更新履歴 - 更新履歴 2008
Thanks Links・リンク集 - 相互リンク募集
CAMServer - よくある質問 CAMServer 編
メッセンジャー / チャット - 使い方、使用方法
応用編 - 便利な使い方(Tips)
メッセンジャー / チャット - 起動及び初期設定方法
メッセンジャー / チャット - メッセンジャー
メッセンジャー / チャット - メッセージ内のアイコン説明
メッセンジャー / チャット - チャット
メッセンジャー / チャット - ログ参照
メッセンジャー / チャット - ファイルやフォルダの送信・受信
メッセンジャー / チャット - アプリケーションの環境設定
メッセンジャー / チャット - ソート設定と優先順位設定
メッセンジャー / チャット - メッセージの保管
メッセンジャー / チャット - 不在モード
スケジュール / カレンダー - カレンダー
スケジュール / カレンダー - スケジュール共有
メッセンジャー / チャット - キャプチャ
メッセンジャー / チャット - 付箋
スケジュール / カレンダー - ToDo
応用編 - フォント設定
メッセンジャー / チャット - 概要資料PDF版
スケジュール / カレンダー - 会議室・施設予約
応用編 - configフォルダ及び各種設定ファイルについて
CAMServer - 特定商取引に関する法律に基づく表記
インストール / Verup - ソフトに個別のJREを適用させる方法
更新履歴 - 更新履歴 2007 Java システム系 - Java 外部コマンドを実行し3つの結果を取得
Java 文字列 - Java LPAD、RPADで整形
Java 日付・時刻 - Java 2つの日付の差を求める
Java システム系 - Java システムプロパティを見やすく出力
Java システム系 - Java メモリー使用量を取得
Java 文字列 - Java ファイル名から拡張子を取り除く
Java 文字列 - Java ファイル名から拡張子を取得
Java ファイル・I/O - Java ディレクトリ内のファイル一覧を表示
Java ファイル・I/O - Java XMLEncoderでオブジェクトを保存
その他 - Windows100% 2008年9月号に掲載
Java 日付・時刻 - Java 2つの日付の月数の差を求める
Java 日付・時刻 - Java 日付・時刻の計算 加算・減算が簡単に
Web関連 - 10の翻訳エンジンを比較できるサイト 翻訳くらべ
Web関連 - Excelの表からHTMLテーブルタグ一発作成
Web関連 - IETester - 複数のIEバージョンの動作確認を行える便利なソフト
Java ファイル・I/O - Java 再帰的にファイルを検索
Java 特集 - Java タスクトレイのアイコンを表示・点滅
応用編 - タスクトレイに格納しメモリを節約
Java ファイル・I/O - Java ファイルコピー(バッファサイズを変更)
Java ファイル・I/O - Java ファイルコピー(簡単・高速)
Java 特集 - Java ログフィルタでHTTPを解析
その他 - おとなのWindows 2008年 12月号に掲載
Java 特集 - Java リフレクション が簡単に
その他 - iP ! (アイピー) 2008年 04月号に掲載
Java 日付・時刻 - Java 日付の妥当性・存在チェック
Java 日付・時刻 - Java 月末日付を取得する
Java 日付・時刻 - Java 現在(今日)の曜日を求める
Java 日付・時刻 - Java 日付文字列をDate型へ変換
Java 日付・時刻 - Java あらゆる日付・時刻文字列をDate、Calendar型へ
更新履歴 - 更新履歴 2006
Java 文字列 - Java 文字列内のURLをリンクに変換
Java ネットワーク - Java 実行しているマシンのホスト名を取得
Java ネットワーク - Java IPアドレスからホスト名を取得
Java Swing - Java システムアイコンを抽出
Java Swing - Java クリップボードへコピー
Thanks Links・リンク集 - リンク集・その他お勧め
コメント
この記事へのコメント
cal
カレンダーの加算・減算のサンプルjavaらしくてとても好きです。
参考にさせていただきます。
2009/08/25(火) 17:58 | URL | cal #.6f/J4tI[ 編集]
addYera
addYeraは、addYearのtypoでは。
2010/02/26(金) 16:30 | URL | ztt #tHX44QXM[ 編集]
参考になりました
サンプルが多くて、助かりました。
2013/09/25(水) 17:36 | URL | zanmai.net #8gIuwhac[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する