所以我正在制作Android应用程序,我需要计算当前日期与当月最后日期之间的天数。
假设今天是2017年1月11日,当月的最后一个日期是2017年11月30日。因此,天数为30天。因为下个月将在30天后开始。
答案 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)
ChronoUnit.DAYS.between( today , firstOfNextMonth )
确定当前日期需要时区。对于任何特定时刻,日期在全球各地按时区变化。
以continent/region
的格式指定proper time zone name,例如America/Montreal
,Africa/Casablanca
或Pacific/Auckland
。切勿使用诸如EST
或IST
之类的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 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
答案 2 :(得分:1)
我不确定java.time
上Android
是否可用,但如果可以,则可以使用LocalDate
和ChronoUnit
:
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)