問題: 怎麼在已知年份和月份的情況下,計算出這個月一共有多少天?
這個有兩種計算方案
方案一因為月份總數是固定的,而每月的天數其實也是已知的,所以可以使用陣列儲存所有月份天數,然後根據月份去陣列中取就行了,**大致如下:
var arr = [31,29,31,30,31,30,31,31,30,31,30,31]; // 儲存每乙個月的天數
var month = 5; // 已知的月份
alert( month + "月一共有" + arr[month-1] + "天");
但這種方案有乙個問題,就是2月份的天數是需要判斷處理的,因為有閏年和平年。
方案二要理解這個思路,需要知道 date() 物件引數的特性。
date() 可以獲取當前時間,也可以設定成指定日期,比如 new date(2020,3,15) , 將日期設定為2023年4月15日(月份引數從0開始標籤,0表示1月,所以3表示4月)。
而如果引數設定的值超過範圍,則會向前進製。
比如 new date(2020,13,15),月份設定為14月,但實際一年只有12個月,超過月份範圍,就會進製,最終設定的日期是 2023年2月15日。
同理,日期如果超過範圍同樣也會進製。所以 new date(2020,5, 40) 設定的日期是2023年7月10日(5表示6月,6月只有30天,6月進製成7月,日期40-30,為10日)。
利用以上原理,因為日期不可能超過32天,所以可以利用32這個數字來計算當前月份有多少天。方法是用當前月份作為月份,用32作為日期,去設定日期,這樣日期就會進製,然後取出進製後的日期,用 32 減去這個日期就是當月的天數。比如當前月份是6月,年份是2023年,想知道6月有多少天: new date(2020,6-1,32), 這樣設定的實際時間是2023年7月2號,將2號這個日期取出來, 32 - 2 = 30 ,可以得出 6月一共有30天,具體**大概如下:
var month = 6; // 表示當前月份的變數
var year = 2020; //年份, 這個根據實際情況而定,是給定的值,還是根據當前時間來獲取年份。
var newdate = new date(year, month - 1, 32); // 根據月份設定日期
var day = 32 - newdate.getdate(); // 根據設定的日期來獲取當前月份的天數。
alert( month + "月一共有" + day + "天。");
這種思路的好處是不論閏年平年都可以正確獲取到2月份的總天數,甚至還可以通過2月份的天數反過來推算出今年是閏年還是平年。
JS取當前時間 日期 月份 季度 指定月份天數
var mydate new date mydate.getyear 獲取當前年份 2位 mydate.getfullyear 獲取完整的年份 4位,1970 mydate.getmonth 獲取當前月份 記得 1 mydate.getdate 獲取當前日 1 31 mydate.getday 獲取...
JAVA獲取指定月份的天數
calendar ymcalendar calendar.getinstance date ymdate new date ymdate.setyear integer.parseint commonutils.getyear kokandayform.getkokanym ymdate.setmo...
獲得特定月份的天數 iOS
需求 給出日期,得出該月的天數 根據給定的日期返回該月的天數 param datestr 特定的日期格式 return 該月天數 nsinteger numberofdayinmonthwithdatestr nsstring datestr 根據給出的日期獲得nsdate param datest...