JavaはCalendarを使用して時間を計算する例示的なコードです。


Javaの実例大全書

  @Test
  public void test4(){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
    /*
     *   15      ?
     *
     * add(int field,int n)
     *    calendar            
     *        ,    
     */
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DAY_OF_YEAR, 15); //      15 
    //System.out.println(calendar.getTime());
    System.out.println(sdf.format(calendar.getTime()));
 
 
    /*
     *                  ?
     */
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.MONTH, 3); //      3  
    cal.add(Calendar.DAY_OF_YEAR, 10); //      10 
    //           ,            
    cal.set(Calendar.DAY_OF_WEEK, 4); //1   ,  4   
    //System.out.println(cal.getTime());
    System.out.println(sdf.format(cal.getTime()));
 
 
    /*
     *                
     *         
     */
    Calendar cal1 = Calendar.getInstance();
    int days = cal1.getActualMaximum(Calendar.DAY_OF_YEAR);
    System.out.println("       :"+days+" ");
 
    /*
     *           
     *         
     */
    Calendar cal2 = Calendar.getInstance();
    int w = cal2.get(Calendar.DAY_OF_WEEK);
    System.out.println("     :"+(w==1?7:w-1));
  }
結果:
/*
 * 15日後は何日ですか?
 */
2019-10-29 14:25:59
/*
 * 三ヶ月の10日後の水曜日は何日ですか?
 */
2020-01-22 14:25:59
/*
 * 今年最大日数を取得
 */
今年の最大日数は365日です。
/*
 * 現在は何曜日ですか?
 */
今日は月曜日です
例:

/**** 
*        ,           。 
* @param date   (2017-04-13) 
* @return 2017-05-13
* @throws ParseException 
*/ 
private String subMonth(String date) throws ParseException { 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
Date dt = sdf.parse(date); 
Calendar rightNow = Calendar.getInstance(); 
rightNow.setTime(dt); 
rightNow.add(Calendar.MONTH, 1); 
Date dt1 = rightNow.getTime(); 
String reStr = sdf.format(dt1); 
return reStr;

取得時間

//                  
Calendar cal = Calendar.getInstance();
//             6  ,       0  ,      +1
System.out.println(" :" + cal.get(Calendar.YEAR));
System.out.println(" :" + (cal.get(Calendar.MONTH) + 1)); 
System.out.println(" :" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println(" :" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println(" :" + cal.get(Calendar.MINUTE));
System.out.println(" :" + cal.get(Calendar.SECOND));
今日は2018年2月12日で、運行結果:
年:2018
月:2
日:12
時:15
ポイント:57
秒:39
時間を設定
2月15日の大晦日の夜のカウントダウンの最後の秒に設定します。2018-02-15 23:59
このようにしてもいいです

Calendar cal = Calendar.getInstance();
//           ,            ,       0       -1
// cal.set(year, month, date, hourOfDay, minute, second);
cal.set(2018, 1, 15, 23, 59, 59);

あるいは、単一のフィールドを一つずつ設定しても良いです。

//   6         ,       0       -1
cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
cal.set(Calendar.DAY_OF_MONTH, 15);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
System.out.println(cal.getTime());

印刷時間の結果は次の通りです。
Thu Feb 15 23:59 CST 2018
時間計算
add方法:
例えば、大晦日の夜の最後の一秒、add一秒:

Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime());
cal.set(2018, 1, 15, 23, 59, 59);
cal.add(Calendar.SECOND, 1);
System.out.println(cal.getTime());

印刷時間の結果は以下の通りです。日付は自動的に次の日に入ります。
Thu Feb 15 23:59 CST 2018
Fri Feb 16 00:00 CST 2018
例えば、1月31日の時、月に一を加えると、どのような結果が出ますか?

Calendar cal = Calendar.getInstance();
cal.set(2018, 1, 31, 8, 0, 0);
System.out.println(cal.getTime());
cal.add(Calendar.MONTH, 1);
System.out.println(cal.getTime());

実行結果:
Wed Jan 31 08:00 CST 2018
Wed Feb 28 08:00 CST 2018
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。