我想将当前日期与给定日期进行比较。当前日期格式为(dd-MM-YYYY)。我不想得到当年。假设今天的日期是30-08-2016。我想只得到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();
}
另一个功能:
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();
}
答案 0 :(得分:1)
java.time.MonthDay
在ThreeTenABP项目中使用现代日期时间类,这是Java 8及更高版本中内置的the back-port类java-time的Android改编版。避免使用麻烦的旧遗留日期时间类。
这些java.time类包含代表一个月的MonthDay
类和一年没有一年的日期。
MonthDay md = MonthDay.of( 8 , 15 );
此类已实现Comparable
接口及其compareTo
方法。还实现了方法equals
,isBefore
和isAfter
。所以,完成了工作。
确定current MonthDay
需要一个时区。对于任何特定时刻,日期变化time zone。
ZoneId z = ZoneId.of( "America/Montreal" );
MonthDay today = MonthDay.now( z );
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
答案 1 :(得分:0)
您是否尝试在要比较的日期使用同一年?
只需使用日历,将年份设置为在两个Date对象中相同,然后比较它们......
(照顾闰年)
答案 2 :(得分:0)
如果您想忽略这一年,请忘记使用日期概念本身。
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!");
}
}
答案 3 :(得分:0)
function to check dob( with current date)
/** dob should be in the format yyyy-MM-dd hh:mm:ss */
public static boolean isTodayBdy(String dob) {
Date today = new Date();
try {
if(dob.length() > 1){
Date dobDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(dob);
if ((today.getMonth() == dobDate.getMonth()) && (today.getDate() == dobDate.getDate())) {
return true;
}
}
} catch (ParseException e) {
return false;
}
return false;
}