有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓如何在java中比较当前日期和月份与给定日期和月份

我想比较当前日期和给定日期。当前日期格式为(dd-MM-yyy)。我不想拿到今年的工资。假设今天的日期是2016年8月30日。我只想要30-08年,我不想要2016年的当前年份。给定的日期是15-08和31-08。我没有得到现在这样的日期30-08。我怎样才能得到这个,怎样才能进行比较?以下是我尝试过的代码:

Date date1_aug, date2_aug, cur_date;

String cur_date_string, sDay, sMonth;

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");


Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1;
int day = calendar.get(Calendar.DATE);

sDay = Integer.toString(day);
sMonth = Integer.toString(month);

cur_date_string = sDay+"-"+sMonth;

            try {
                cur_date = sdf.parse(cur_date_string);
            } catch (java.text.ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
  1. 另一个功能:

            try{
                        date1_aug = sdf.parse("15-08");
                        date2_aug = sdf.parse("31-08");
    
                        if(cur_date.equals(date1_aug) || cur_date.after(date1_aug) || cur_date.before(date2_aug)){
                            textView_Amount_LateFee.setText(Config.fine_aug.get(1));
                        }
    
    
                    }catch(ParseException ex){
                        ex.printStackTrace();
                    }
    

共 (3) 个答案

  1. # 1 楼答案

    如果你想忽略年份,忘记使用日期概念本身

    String given_date = "15-08";
    
    String[] tokens = given_date.split("-");
    
    int given_day = Integer.parseInt(tokens[0]);
    int given_month = Integer.parseInt(tokens[1]);
    
    Calendar c = Calendar.getInstance();
    
    int now_month = c.get(Calendar.MONTH) + 1;
    int now_day = c.get(Calendar.DATE);
    
    System.out.println(given_day + " " + given_month + " " + now_day + " " + now_month);
    
    if (now_month > given_month) {
        System.out.println("Before Today!");
    } else if (now_month < given_month) {
        System.out.println("After Today!");
    } else {
        if (now_day > given_day) {
            System.out.println("Before Today!");
        } else if (now_day < given_day) {
            System.out.println("After Today!");
        } else {
            System.out.println("Today!");
        }
    }
    
  2. # 2 楼答案

    您是否尝试过在要比较的日期中使用同一年

    只需使用日历,将两个日期对象中的年份设置为相同,然后比较它们

    (注意闰年)

  3. # 3 楼答案

    java.time.MonthDay

    ThreeTenABP项目中使用现代日期时间类,这是Java 8及更高版本中内置的java-time类的the back-port的Android改编。避免麻烦的旧遗留日期时间类

    这些是java。时间类包括^{}类,代表一个月和一个月中的一天,但不代表年份

    MonthDay md = MonthDay.of( 8 , 15 );
    

    这个类已经实现了^{}接口及其^{}方法。还实现了方法^{}^{}^{}。工作完成了

    确定current ^{}需要一个时区。对于任何给定的时刻,日期都会变化time zone

    ZoneId z = ZoneId.of( "America/Montreal" );
    MonthDay today = MonthDay.now( z );
    

    关于java。时间

    {a12}框架内置于Java8及更高版本中。这些类取代了legacy日期时间类,比如^{}^{}、&^{}

    目前位于maintenance modeJoda-Time项目建议迁移到java.time

    要了解更多信息,请参阅Oracle Tutorial。并在Stack Overflow中搜索许多示例和解释。规范是JSR 310

    在哪里可以获得java。时间课