gpt4 book ai didi

java - 公历法

转载 作者:行者123 更新时间:2023-12-04 05:10:41 26 4
gpt4 key购买 nike

我正在尝试创建一个以两个日期作为参数的程序,并返回日期是否在当前周内,但我在调用 isDateInCurrentWeek 时遇到问题。 .当我尝试编译程序时,我收到一条错误消息

requestHoliday.java:16: isDateInCurrentWeek(java.util.GregorianCalendar) in requestHoliday cannot be applied to (java.util.Calendar)
if (isDateInCurrentWeek(startDate) && isDateInCurrentWeek(endDate));

.
import java.util.*;
import java.text.*;

public class hols {
public static void main( String[] args ) {
DateFormat df = new SimpleDateFormat("dd MM yyyy");
Date start = df.parse(args[0]);
Date end = df.parse(args[1]);
Calendar startDate = new GregorianCalendar();
Calendar endDate = new GregorianCalendar();
startDate.setTime(start);
endDate.setTime(end);
if( isDateInCurrentWeek( startDate ) && isDateInCurrentWeek( endDate ));
System.out.println( "Date is in current week!" );
}

public static boolean isDateInCurrentWeek(GregorianCalendar date) {
Calendar currentCalendar = GregorianCalendar.getInstance();
int week = currentCalendar.get(Calendar.WEEK_OF_YEAR);
int year = currentCalendar.get(Calendar.YEAR);
Calendar targetCalendar = GregorianCalendar.getInstance();
targetCalendar = date;
int targetWeek = targetCalendar.get(Calendar.WEEK_OF_YEAR);
int targetYear = targetCalendar.get(Calendar.YEAR);
return week == targetWeek && year == targetYear;
}
}

不太确定问题是什么,因为该方法将公历作为输入,并且两个日期采用公历格式。有人知道吗?

最佳答案

您有一个 ;if ,删除它...

公历是一个日历,而不是相反。
如果抽象和通用方法适合您的需要,请更改签名以使用 Calendar。尽可能使用契约而不是实现,如 What does it mean to "program to an interface"? 中所述(感谢 Luiggi)。

hols id 不是 good class name .霍尔可能会更好...

这段代码运行良好:

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 Hols {
public static void main( String[] args ) throws ParseException {
DateFormat df = new SimpleDateFormat("dd MM yyyy");
Date start = df.parse( args[0] );
Date end = df.parse( args[1] );
Calendar startDate = new GregorianCalendar();
Calendar endDate = new GregorianCalendar();
startDate.setTime(start);
endDate.setTime(end);
if( isDateInCurrentWeek( startDate ) && isDateInCurrentWeek( endDate ))
System.out.println( "Date is in current week!" );
else
System.out.println( "Date is NOT in current week!" );
}

public static boolean isDateInCurrentWeek( Calendar date ) {
Calendar currentCalendar = Calendar.getInstance();
int week = currentCalendar.get(Calendar.WEEK_OF_YEAR);
int year = currentCalendar.get(Calendar.YEAR);
Calendar targetCalendar = Calendar.getInstance();
targetCalendar = date;
int targetWeek = targetCalendar.get(Calendar.WEEK_OF_YEAR);
int targetYear = targetCalendar.get(Calendar.YEAR);
return week == targetWeek && year == targetYear;
}
}

关于java - 公历法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14966213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com