文章目錄
- java計算指定日期的上個月
-
- Calendar類
- API
- 代碼實作
java計算指定日期的上個月
Calendar類
Calendar類是一個抽象類,可以為在某一特定時刻和一組之間的轉換的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR ,等等,以及用于操縱該月曆字段,如擷取的日期下個星期。 時間上的瞬間可以用毫秒值表示,該值是從1970年1月1日00:00 00:00.000 GMT(Gregorian)的Epoch的偏移量。
Calendar提供了一種類方法getInstance ,用于擷取此類型的一般有用的對象。 Calendar的getInstance方法傳回一個Calendar對象,其月曆字段已使用目前日期和時間進行初始化:
Calendar rightNow = Calendar.getInstance();
Calendar對象可以産生實作特定語言和月曆風格的日期時間格式化所需的所有月曆字段值(例如日語 - 公曆,日語 - 繁體)。 Calendar定義某些月曆字段傳回的值的範圍及其含義。 例如,月曆系統第一個月的值為MONTH == JANUARY為所有月曆。 其他值由具體的子類定義,如ERA 。 有關詳細資訊,請參閱各個實體文檔和子類文檔。
以上來源于jdk1.8官方文檔
API
修飾符和類型 | 方法 | 說明 |
---|---|---|
abstract void | add(int field, int amount) | 根據月曆的規則,将指定的時間量添加或減去給定的月曆字段。 |
static Calendar | getInstance() | 使用預設時區和區域設定擷取月曆。 |
void | setTime(Date date) | 使用給定的 Date設定此月曆的時間。 |
Date | getTime() | 傳回一個 Date表示此物體 Calendar的時間值(毫秒從偏移 Epoch “)。 |
代碼實作
package test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateTest {
/*
* 計算日期的上一個月
*/
public static String getPrevMonthDate(Date date,int n) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - n);
return new SimpleDateFormat("yyyy-MM").format(calendar.getTime());
}
//擷取指定日期的前幾個月或者後幾個月
public static String test(Date date,int n) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, -n);
return new SimpleDateFormat("yyyy-MM").format(calendar.getTime());
}
public static void main(String[] args) {
String dateString = "2021-01-23";
try {
Date date= new SimpleDateFormat("yyyy-MM-dd").parse(dateString);
//輸出指定日期的上一個月,如果是-1則代表資料下一個月
System.out.println(getPrevMonthDate(date, 1));
System.out.println(test(date,1));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
上面給了兩種方法都可以實作,推薦使用第二種