找到并返回第二天的字符串的最佳方法是什么?

时间:2016-02-01 07:28:40

标签: java algorithm date

我使用了一种基本技术来实现一种方法,该方法根据格式为YYYY-MM-DD的给定参数查找第二天的日期,并以相同的格式返回第二天。

请您查看代码并告诉我它是否效率低下?它工作得非常好,但如果可能的话,我宁愿实现一种效率更高,代码行更少的方法。请记住,任何月份或日期的单位数值都必须格式化为十位的0。

public String nextDate(String date){ //ex: 2016-01-31 -returns-> 2016-02-01
    int MMrange = 30;

    String result = ""; 
    String daystr = date.substring(8,10);
    String monthstr = date.substring(5,7);

    int day = Integer.parseInt(daystr);
    int month = Integer.parseInt(monthstr);
    int year = Integer.parseInt(date.substring(0,4));
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) MMrange = 31;
    else if(month==2) MMrange = 28;
    if(year%4==0&&month==2) MMrange = 29;
    if(day==MMrange){
        day =1;
        month++;
    }else if(month==12&&day==31){
        year++;
        month = 1;
        day = 1;
    }else{
        day++;
    }
    result = Integer.toString(year)+"-"+Integer.toString(month)+"-"+Integer.toString(day);
    if(month <=9&&day<=9) result = Integer.toString(year)+"-0"+Integer.toString(month)+"-0"+Integer.toString(day);
    else if(month <= 9) result = Integer.toString(year)+"-0"+Integer.toString(month)+"-"+Integer.toString(day);
    else if(day <= 9) result = Integer.toString(year)+"-"+Integer.toString(month)+"-0"+Integer.toString(day);
    return result;
}

3 个答案:

答案 0 :(得分:1)

试试这个......

更新 //进口......

 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 public static String getNextdt(String  dt) {
  try {
        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        final Date date = format.parse(dt);
        final Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_YEAR, 1);
        System.out.println(format.format(calendar.getTime()));
        return format.format(calendar.getTime());
    } catch (Exception e) {

    }
}

答案 1 :(得分:0)

您应该使用Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load If textBox1.ReadOnly Then TextBox1.BackColor = Color.Blue End If End Sub 格式和java.text.DateFormat进行计算,例如

java.util.Calendar

答案 2 :(得分:0)

如果使用Java 8,则更短的方法是:

LocalDate localDate = LocalDate.now();
localDate.plusDays(1);
System.out.println(localDate.toString());

希望这适合你。