如何获得下个月的开始日期和结束日期,如果当月是二月? [英] How to get next month start date and end date if current month is february?

查看:95
本文介绍了如何获得下个月的开始日期和结束日期,如果当月是二月?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

   String febSt = "02/01/2014" ;
   String febEnd = "02/28/2014" ;

以上代码是我需要的输入03/01/2014和03/31/2014 作为输出。
我尝试更多的代码和使用日历功能,但没有结果。从这个程序,我需要下个月的开始和结束日期。

Above code is my input i need "03/01/2014" and "03/31/2014" as output . I tried more codes and used calendar functions also but no result.From this program i need next month start and end date .

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;

    public class MonthCalculation {


        public void getNextMonth(String date) throws ParseException{


            DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
            Date dt = format.parse(date);


            Date begining, end;

            {
                Calendar calendar = getCalendarForNow(dt);
                calendar.set(Calendar.DAY_OF_MONTH,calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
                setTimeToEndofDay(calendar);
                end = calendar.getTime();

                SimpleDateFormat endDt = new SimpleDateFormat("MM/dd/yyyy");
                String endStrDt = endDt.format(end);
                if(date != null && date.equalsIgnoreCase(endStrDt)){
                    System.out.println("Ending of the month");
                    calendar.add(Calendar.DAY_OF_MONTH, 1);
                    Date lastDate = calendar.getTime();
                    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
                    String lastDateofNextMonth = sdf.format(lastDate);
                    System.out.println("Next Month :"+lastDateofNextMonth);

                    Calendar c = getCalendarForNow(new Date(lastDateofNextMonth));
                    calendar.set(Calendar.DAY_OF_MONTH,calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
                    setTimeToEndofDay(calendar);
                    end = calendar.getTime();

                    SimpleDateFormat sfd = new SimpleDateFormat("MM/dd/yyyy");
                    String lastDated = endDt.format(end);
                    System.out.println("Testing side :"+lastDated);

                }else if (findLeapYear(dt)){
                    Calendar calendar3 = getCalendarForNow(dt);
                    calendar3.add(Calendar.YEAR, 1);
                    Date ds = calendar3.getTime();
                    SimpleDateFormat dtft = new SimpleDateFormat("MM/dd/yyyy");
                    String dates = dtft.format(ds);
                    dtft.setLenient(false);
                    System.out.println("YEAR : "+dates);

                }else{
                                    SimpleDateFormat dtft = new SimpleDateFormat("MM/dd/yyyy");
                    Calendar calendar2 = getCalendarForNow(dt);
                    System.out.println(" Calendar time :->> " + dtft.format(calendar2.getTime()));
                    int curre_month = calendar2.get(Calendar.MONTH);
                    int curre_day = calendar2.get(Calendar.DAY_OF_MONTH);
                    int curre_year = calendar2.get(Calendar.YEAR);

                    Date dat = calendar2.getTime();
                    calendar2.add(Calendar.DATE, 31);
                    Date ds = calendar2.getTime();
                    String dates = dtft.format(ds);
                    dtft.setLenient(false);
                    System.out.println("OTHER DAYS : "+dates);

                }
            }

        }

        private static boolean findLeapYear(Date dt){
            boolean isLeapYr = false;
            int yr = dt.getYear();
            if ((yr%4 == 0 && yr%100!=0)){
                isLeapYr = true;
               }
            return isLeapYr;
        }

        private static Calendar getCalendarForNow(Date dt) {
            Calendar calendar = GregorianCalendar.getInstance();
            calendar.setTime(dt);
            return calendar;
        }

        private static void setTimeToBeginningOfDay(Calendar calendar) {
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
        }

        private static void setTimeToEndofDay(Calendar calendar) {
            System.out.println("For feb calling");
            calendar.set(Calendar.HOUR_OF_DAY, 23);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.SECOND, 59);
            calendar.set(Calendar.MILLISECOND, 999);
        }


        public static void main(String[] args) {

            try {
                String janSt = "01/01/2014" ;
                    String janEnd = "01/31/2014" ;

                    String febSt = "02/01/2014" ;
                    String febEnd = "02/28/2014" ;

                    String marSt = "03/01/2014" ;
                    String marEnd = "03/31/2014" ;

                    String aprilSt = "04/01/2014" ;
                    String aprilEnd = "04/30/2014" ;

                    String maySt = "05/01/2014" ;
                    String mayEnd = "05/31/2014" ;

                    String juneSt = "06/01/2014" ;
                    String juneEnd = "06/30/2014" ;

                    String julySt = "07/01/2014" ;
                    String julyEnd = "07/31/2014" ;

                    String augSt = "08/01/2014" ;
                    String augEnd = "08/31/2014" ;

                    String sepSt = "09/01/2014" ;
                    String sepEnd = "09/30/2014" ;

                    String octSt = "10/01/2014" ;
                    String octEnd = "10/31/2014" ;

                    String novSt = "11/01/2014" ;
                    String novEnd = "11/30/2014" ;

                    String deceSt = "12/01/2014" ;
                    String deceEnd = "12/31/2014" ;

                    String jan15St="01/01/2015";
                    String jan15End="01/31/2015";

                    String leapyr = "02/29/2016";
                    String notaleapyr = "02/28/2015";

                new MonthCalculation().getNextMonth(febSt);
            } catch (ParseException e) {
                e.printStackTrace();
            }


        }

如果我通过这些日期作为输入返回的月份的第二个月
建议任何想法进一步继续。我正在努力这个代码。
提前感谢

I tried more with sample inputs , for the months February ,april, june nov start date are not working if i pass these dates as inputs it returns with 2nd of next month Suggest any idea to proceed further.I am struggling this code. Thanks in advance

推荐答案

尝试这样:

Calendar calendar = Calendar.getInstance();         
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
Date nextMonthFirstDay = calendar.getTime();
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();

这篇关于如何获得下个月的开始日期和结束日期,如果当月是二月?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆