在给定的特定日期添加n天

时间:2014-04-07 16:07:38

标签: java date

String dt="2014-04-25";

我想在这个日期添加n天...我已经搜索了很多但是无法获得任何好的工作代码....

我已经尝试了SimpleDateFormat但是它没有用,所以请帮我解释一下代码......

2 个答案:

答案 0 :(得分:0)

您可以使用joda时间库

来完成
import org.joda.time;

String dt="2014-04-25";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
DateTime dateTime = formatter.parseDateTime(dt);

DateTime oneDayPlus = dateTime.plusDays(1);
String oneDayPlusString = oneDayPlus.toString(formatter);  // This is "2014-04-26"

oneDayPlus会为您提供所需的对象。

同样,这需要您使用额外的jar文件,因此如果您可以引入添加新库,请使用它。

答案 1 :(得分:0)

记住String != Date他们没有任何共同之处(好吧,排除字符串可以表示日期确定的事实?)

如果您想为String添加天数,可以将其转换为Date并使用普通API为其添加天数。

在这里我们使用SimpleDateFormat用于从模板字符串创建日期

String dt = "2014-04-25";
//           yyyy-MM-dd
//           year-month-day

DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.US);

try
{
    Date date = format.parse(dt);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);

    calendar.add(Calendar.DAY_OF_MONTH, 5);

    System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
}
catch (ParseException e)
{
    System.out.println("Wrong date");
}

yyyy-MM-dd是我们的模式,它与我们的字符串相对应。

format.parse(dt);

尝试从我们传递的字符串创建一个Date对象,如果失败则抛出ParseException。 (如果你想检查它是否有效只是尝试传递一个无效的字符串)

然后我们创建一个新的Calendar实例,并将日期设置为我们创建的日期(这与我们的字符串中的日期相对应)并添加五天到我们的日期..我们走了。现在日历将引用30-04-2014

您可以替换

calendar.add(Calendar.DAY_OF_MONTH, 5);

calendar.add(Calendar.DAY_OF_MONTH, n);

如果您愿意,它会添加n天。