Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是一个月的最后一天吗?_Java_Date - Fatal编程技术网

Java 这是一个月的最后一天吗?

Java 这是一个月的最后一天吗?,java,date,Java,Date,我希望发生的事情-如果参数给出的日期等于当月的最后一天,我希望成本增加10%。即如果dayOfTravel=当月的最后一天 public static double ReturnJourneyCost(int journeyID, int dayOfTravel, int monthOfTravel, int yearOfTravel){ Cost = Double.parseDouble(XMLLoad.load(journeyID, 3)); return Cost;

我希望发生的事情-如果参数给出的日期等于当月的最后一天,我希望成本增加10%。即如果dayOfTravel=当月的最后一天

  public static double ReturnJourneyCost(int journeyID, int dayOfTravel, int monthOfTravel, int yearOfTravel){

    Cost = Double.parseDouble(XMLLoad.load(journeyID, 3));
    return Cost;

}

像这样的东西,使用,将达到以下目的:

GregorianCalendar calendar = new GregorianCalendar();
calendar.set(Calendar.YEAR, yearOfTravel);
calendar.set(Calendar.MONTH, monthOfTravel); // warning: 0-based!
calendar.set(Calendar.DAY_OF_MONTH, dayOfTravel);

int daysInThisMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
if (daysInThisMonth == dayOfTravel)
{
    // increase cost by 10%
}

使用旧的JDK工具,答案可能如下所示:

public static boolean isLastDayOfMonth(int year, int month, int day) {
  GregorianCalendar gcal = new GregorianCalendar(year, month - 1, day);
  gcal.add(Calendar.DATE, 1);
  return (gcal.get(Calendar.DAY_OF_MONTH) == 1);
}
在Java 8中更好,因为它避免了对系统时区的任何隐式引用:

public static boolean isLastDayOfMonth(int year, int month, int day) {
  LocalDate date = LocalDate.of(year, month, day);
  return date.lengthOfMonth() == day;
}

您需要编写一些自定义代码

public boolean isLastDay(Date date) {
    Calendar now = Calendar.getInstance();
    now.setTime(date);
    Calendar c = Calendar.getInstance();
    c.setTime(date);

    c.add(Calendar.DAY_OF_MONTH, 1);
    return c.get(Calendar.MONTH) != now.get(Calendar.MONTH);
}
您可以尝试以下方法:

Calendar calendar = Calendar.getInstance();

if (calendar.get(Calendar.MONTH) == monthOfTravel && 
&& calendar.ger(Calendar.YEAR) == yearOfTravel && calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == dayOfTravel) {
//...
}

有什么问题吗?我并不打算解决这个问题。顺便说一句,Java命名约定建议方法名以小写开头case@Averroes,即使是静态方法?最坏的情况是加上一天,看看这个月是否变了…@ashburaczenko AFAIK yes