java 获取某月份的具体天数

java 获取某月份的具体天数,第1张

楼上正解,不过楼主问出这个问题可能也是初学者,我就提供一下用简单语法的代码吧

public

static

void

main(String[]

args)

{

Scanner

scan=new

Scanner(Systemin);

Systemoutprintln("请输入年份");

int

year=

scannextInt();//得到需求年份

Systemoutprintln("请输入月份");

int

month=scannextInt();//得到需求月份

switch(month){

case

1:

case

3:

case

5:

case

7:

case

8:

case

10:

case

12:

Systemoutprintln(year+"年"+month+"月的天数为:"+31);

break;

case

4:

case

6:

case

9:

case

11:

Systemoutprintln(year+"年"+month+"月的天数为:"+30);

case

2:

if((year%400)==0

||

((year%4)==0)&&((year%100)!=0)){

Systemoutprintln(year+"年2月的天数为:"+29);

}else{

Systemoutprintln(year+"年2月的天数为:"+28);

}

}

}

用毫秒数计算已经不是正确方法了。原因是夏令时间会造成计算错误。差一小时就是差一天。如果对这方面有疑问,可以补充问题,我再详细解答。

虽然在国内运用没有问题,但是如果用于国际化的金融系统就不行了。

所以建议你在学习阶段就认知,现代标准就是尽量不要使用毫秒数计算日期。

以下是正确方法:

public static long daysBetween(Calendar startDate, Calendar endDate) {

Calendar date = (Calendar) startDateclone();

long daysBetween = 0;

while (datebefore(endDate)) {

dateadd(CalendarDAY_OF_MONTH, 1);

daysBetween++;

}

return daysBetween;

}

import javatextParseException;

import javatextSimpleDateFormat;

import javautilCalendar;

import javautilDate;

public class Test {

public static void main(String[] args) {

try {

//时间转换类

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

Date date1 = sdfparse("2014-1-10");

Date date2 = sdfparse("2012-12-20");

//将转换的两个时间对象转换成Calendard对象

Calendar can1 = CalendargetInstance();

can1setTime(date1);

Calendar can2 = CalendargetInstance();

can2setTime(date2);

//拿出两个年份

int year1 = can1get(CalendarYEAR);

int year2 = can2get(CalendarYEAR);

//天数

int days = 0;

Calendar can = null;

//如果can1 < can2

//减去小的时间在这一年已经过了的天数

//加上大的时间已过的天数

if(can1before(can2)){

days -= can1get(CalendarDAY_OF_YEAR);

days += can2get(CalendarDAY_OF_YEAR);

can = can1;

}else{

days -= can2get(CalendarDAY_OF_YEAR);

days += can1get(CalendarDAY_OF_YEAR);

can = can2;

}

for (int i = 0; i < Mathabs(year2-year1); i++) {

//获取小的时间当前年的总天数

days += cangetActualMaximum(CalendarDAY_OF_YEAR);

//再计算下一年。

canadd(CalendarYEAR, 1);

}

Systemoutprintln("天数差:"+days);

} catch (ParseException e) {

eprintStackTrace();

}

}

}

Console:

天数差:386

程序就自己写吧,告诉你一个思路。先判断月份是否为2月,如果是的话判断年是否为闰年,若为闰年2月为29天,若不是闰年为28天;如果要判断的月份不是2月,判断其是否为1,3,5,7,8,10,12,若是其中的一个则为31天,剩余的月份为30天

publicStringgetLastMonthDay(){Calendarcal=CalendargetInstance();Datedate=newDate();calsetTime(date);intyear=0;intmonth=calget(CalendarMONTH);//上个月月份//intday1=calgetActualMinimum(CalendarDAY_OF_MONTH);//起始天数intday=calgetActualMaximum(CalendarDAY_OF_MONTH);//结束天数Systemoutprintln("###lastmonth:"+month);if(month==0){year=calget(CalendarYEAR)-1;month=12;}else{year=calget(CalendarYEAR);}StringendDay=year+"-"+month+"-"+day;returnendDay+"23:59:59"}

import javautilCalendar;

public class Du {

public static void main(String[] args) {

String date = "2011-01-12";

int[] daysInMonth = getMonthDays(date);

for(int value: daysInMonth){

Systemoutprint(value + " ");

}

}

private static int[] getMonthDays(String date) {

Calendar calendar = CalendargetInstance();

calendarset(CalendarYEAR, IntegerparseInt(datesubstring(0, 4)));

calendarset(CalendarMONTH, IntegerparseInt(datesubstring(5, 7)) -1);

int maxDay = calendargetActualMaximum(CalendarDAY_OF_MONTH);

int[] days = new int[maxDay];

for(int i = 1; i <= maxDay; i++){

days[i-1] = i;

}

return days;

}

}

-----------------

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

年闰年和非闰年,闰年366天,非闰年365天。所以判断某年多少天也就是判断是否是闰年。

闰年的判断依据

①、普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1900年不是闰年)

②、世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)

代码:

int year;//要判断的年份,比如2008

int days;//某年(year)的天数

if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){//闰年的判断规则

   days=366;

}else{

   days=365;

}

以上就是关于java 获取某月份的具体天数全部的内容,包括:java 获取某月份的具体天数、怎么求java,2个日期之间有多少天。。、java中知道两个日期如何获得两个日期之间的天数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9694430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存