如何使用java打印第二天

时间:2015-08-14 18:49:16

标签: java date

我有一种方法,必须在接下来的七天打印,但不是在接下来的七天打印,而是打印最后七天,

有人可以帮我解决这个问题

这是我使用的方法,

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class TestCalandar
{
    public static void main(String[] args)
    {
        SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
        SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE");
        String date[] = null;
        date = df.format(new Date()).split("/");
        Calendar cal = Calendar.getInstance();
        cal.set(Integer.parseInt(date[2]), Integer.parseInt(date[0]) - 1, Integer.parseInt(date[1]));
        Map<String, String> currentWeekMap = new HashMap<String, String>();

        for (int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++)
        {
            cal.set(Calendar.DAY_OF_WEEK, i);
            currentWeekMap.put(dayFormat.format(cal.getTime()), df.format(cal.getTime()));
        }
        System.out.println(currentWeekMap);
    }
}

5 个答案:

答案 0 :(得分:1)

使用新的Java8时间API。这将完成您的代码尝试的目的。

Map<String, String> currentWeekMap = new HashMap<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");

LocalDate today = LocalDate.now();
for (int i=1; i<=7; i++) {
    LocalDate newDay = today.plusDays(i);
    String dayOfWeek = newDay.getDayOfWeek().toString();
    String formattedDate = newDay.format(formatter);
    currentWeekMap.put(dayOfWeek, formattedDate);
}

System.out.println(currentWeekMap);

答案 1 :(得分:0)

方法Calendar.set将指定字段(在本例中为DAY_OF_WEEK字段)设置为指定值。对其他字段的影响取决于其他因素,更具体地说,Calendar.set的效果是更改星期几,调整将在当前WEEK_OF_YEAR内进行。此行为取决于运行代码的区域设置。

相反,您需要添加一天,因此您可以使用Calendar.add方法。

cal.set(Calendar.DAY_OF_WEEK, i)

可以改为:

cal.add(Calendar.DAY_OF_YEAR, 1);

这将为循环的每次迭代添加一天。

如果需要按顺序打印输出,则在循环的每次迭代中打印将比放入HashMap更好,因为HashMap未被排序。

此外,您声明您的要求是打印接下来的7天,因此第一天应该是明天,这意味着您可以删除以下行。当您调用Calendar.getInstance()时,日期会自动设置为当前时区的当前时间,因此您只想立即开始添加日历,这意味着第一个日期将是明天。

cal.set(Integer.parseInt(date[2]), Integer.parseInt(date[0]) - 1, Integer.parseInt(date[1]));

请参阅此处:http://www.tutorialspoint.com/java/util/calendar_add.htm,以便在Google上的Calendar.add上进行首次搜索。

答案 2 :(得分:0)

我真是简短的例子

public class DateUtils {
    private DateUtils() {}

    public static Date addDays(Date baseDate, int daysToAdd) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(baseDate);
        calendar.add(Calendar.DAY_OF_YEAR, daysToAdd);
        return calendar.getTime();
    }
}

答案 3 :(得分:0)

这里的解决方案应该输出你想要的:)。希望它有所帮助!

  import java.text.SimpleDateFormat;
  import java.util.Calendar;
  import java.util.Date;
  import java.util.HashMap;
  import java.util.Map;

  class TestCalandar
 {
     public static void main(String[] args){
     Calendar now = Calendar.getInstance();

     SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");

     String[] days = new String[7];
     int delta = now.get(Calendar.DAY_OF_WEEK)-6; 
     now.add(Calendar.DAY_OF_MONTH, delta );
     for (int i = 0; i < 7; i++)
     {
      days[i] = format.format(now.getTime());
       now.add(Calendar.DAY_OF_MONTH, 1);
     }
        for(int i = 0 ; i < days.length ; i++){
         System.out.println(days[i]);
   }

}

}

答案 4 :(得分:0)

这是工作的,

public static void main(String[] args) {
    SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
    SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE");
    String date[] = null;
    date = df.format(new Date()).split("/");
    Calendar cal = Calendar.getInstance();
    cal.set(Integer.parseInt(date[2]), Integer.parseInt(date[0]), Integer.parseInt(date[1]));
    Map<String, String> currentWeekMap = new HashMap<String, String>();

    for (int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++) {
        cal.add(Calendar.DATE, 1);
        currentWeekMap.put(dayFormat.format(cal.getTime()), df.format(cal.getTime()));
    }
    System.out.println(currentWeekMap);
}