gpt4 book ai didi

java - 比较日历对象

转载 作者:行者123 更新时间:2023-12-01 11:24:46 24 4
gpt4 key购买 nike

我在比较 2 个日历对象时遇到一些问题。这是我的代码:

String date = "06/19/2015";

Calendar c = Calendar.getInstance();
String days="", months="", years="";
Scanner sc = new Scanner(date);
sc.useDelimiter("/");
while(sc.hasNext()){
months = sc.next();
days = sc.next();
years = sc.next();
}
int day = Integer.parseInt(days);
int month = Integer.parseInt(months);
int year = Integer.parseInt(years);
System.out.println(day+" "+month+" "+year);

Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, day);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.YEAR, year);

if(c.before(cal)){
System.out.println("Victory!");
}

sc.close();

它应该将今天的日期与字符串中的日期进行比较并打印出“Vicotry!”。问题是,它总是打印出来,即使它不应该...有人可以帮助我吗?

最佳答案

问题是您设置日历月份的方式错误,如果您要手动设置字段,您应该使用日历常量或了解内部工作原理。

您将 june 视为整数值 6 ,但是 callendar 的月份索引为 0 到 11,因此 Calendar.JUNE 将为 5,而不是 6。您的手动日期解析解决方案设置 Calendar cal 的月份> 到 7 月(Calendar.JULY 是 6)

<小时/>我建议采用一种更简洁的方法,即使用 DateFormat 解析日期。您实际上并不需要使用 Calendar来获取当前日期。最好使用 new Date() 而不是 Calendar.getInstance()

如果您确实想处理日期字段,可以使用calendarObj.setTime(dateObject)

    String dateString = "06/19/2015";
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Calendar c = Calendar.getInstance();
try {
Date date1 = sdf.parse(dateString);
//makes sense using calendar only if you want to process the date fields
//otherwise use if (new Date().before(date1)){...}
if (c.getTime().before(date1)) {
System.out.println("Victory!");
};

date1.getTime();
} catch (ParseException e) {
System.out.println("Invalid date format");
}

关于java - 比较日历对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919299/

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