如何获取今天的日期和当月的最后一个日期之间的天数?

时间:2017-11-01 16:33:53

标签: java android date calendar

所以我正在制作Android应用程序,我需要计算当前日期与当月最后日期之间的天数。

假设今天是2017年1月11日,当月的最后一个日期是2017年11月30日。因此,天数为30天。因为下个月将在30天后开始。

4 个答案:

答案 0 :(得分:3)

    Calendar calendar = Calendar.getInstance();
    int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
    int daysLeft = lastDay - currentDay;


    System.out.println("Last Day: " + lastDay);
    System.out.println("Current Day : " + currentDay);
    System.out.println("There are " + daysLeft + " days left in the month.");

输出

Last Day: 30
Current Day : 1
There are 29 days left in the month.

答案 1 :(得分:2)

TL;博士

ChronoUnit.DAYS.between( today ,  firstOfNextMonth )

java.time

确定当前日期需要时区。对于任何特定时刻,日期在全球各地按时区变化。

continent/region的格式指定proper time zone name,例如America/MontrealAfrica/CasablancaPacific/Auckland。切勿使用诸如ESTIST之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。

ZoneId z = ZoneId.of( "Africa/Casablanca" ) ; 
LocalDate today = LocalDate.now( z ) ;

从中获取一个对象来表示整个月,即当前的YearMonth

YearMonth ym = YearMonth.from( today ) ;

从那以后,请问下个月的第一天。通常,处理一段时间的最佳实践是半开放式方法。开头是包含,而结尾是独占。因此,当前月份会达到,但确实包括下个月的第一个月。

LocalDate firstOfNextMonth = ym.plusMonths( 1 ).atDay( 1 ) ;

要计算总天数,请使用ChronoUnit枚举。

long days = ChronoUnit.DAYS.between( today ,  firstOfNextMonth ) ;

转储到控制台。

System.out.println( days + " days between " + today + " and " + firstOfNextMonth ) ;

请参阅此code run live at IdeOne.com

  

2017-11-01至2017-12-01之间的30天

仅供参考,您可以使用Period来跟踪时间跨度。对于其他目的有用,但表示天数。

Period p = Period.between( today , firstOfNextMonth ) ;

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

答案 2 :(得分:1)

我不确定java.timeAndroid是否可用,但如果可以,则可以使用LocalDateChronoUnit

LocalDate today = LocalDate.now();
LocalDate lastDayOfMonth = today.withDayOfMonth(today.lengthOfMonth());

System.out.println(today); // 2017-11-01
System.out.println(lastDayOfMonth); // 2017-11-30
System.out.println(ChronoUnit.DAYS.between(today,lastDayOfMonth)); // 29

答案 3 :(得分:-2)

import datetime

current_time = datetime.datetime.now() 
date = current_time.day
month = current_time.month
year = current_time.year


if ((month == 1) or (month == 3) or(month == 5) or(month == 7) or(month == 8) or(month == 10) or(month == 12)):
    totL_days = 31
    remain_days = 31 - date
elif ((month == 4) or (month == 6) or (month == 9) or (month == 11)):
    totL_days = 30
    remain_days = 30 - date
else:
    if((year%400==0) or (year%4==0) and (year%100!=0)):
        totL_days = 29
        remain_days = 29 - date
    else:
        totL_days = 28
        remain_days = 28 - date

print(date,month,year)
print(totL_days)
print(remain_days)