求给定日期之前30天的日期

来源:百度知道 编辑:UC知道 时间:2024/05/18 23:09:28
比如给定时间 2008-05-01
那么就应该返回一个 2008-04-01

给定时间 2008-04-01
那么就应该返回一个 2008-03-02

给定时间 2008-04-30
那么就应该返回一个 2008-03-31

给定时间2008-03-01
那么就应该返回一个 2008-01-31

给定时间2007-03-01
那么就应该返回一个 2007-01-30
//要考虑到每月的天数不一样,闰年的二月会变化
能详细点吗?我想得到具体的值,format以后的样子是这样的2008-01-01,或者给个字符串也行~~~

import java.text.*;
import java.util.*;

public class Test {

public static void main(String[] args) {
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd"); // 设置日期格式
GregorianCalendar gc = new GregorianCalendar();

String nDate = "2008-03-01"; //给定时间
int size = -30; //30天之前
String lastDate; //得到换算后的时间串

Date date = null;

try {
date = dfs.parse(nDate); //把指定时间转为日期型
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}

gc.setTime(date); //注入指定时间
gc.add(Calendar.DATE, size); //30天之前的时间

String month = new Integer(gc.get(Calendar.MONTH) + 1).toString();
if (gc.get(Calendar.MONTH) + 1 < 10) {
month = "0" + month;
}
String day = new Integer(gc.get(Calendar.DATE)).toString();
if (gc.get(Calendar.DATE) < 10) {
day = "0&quo