java 給定年份和月份 獲取該月所包含的周列表
本人在工作開發中遇到了這樣一個需求,已知年份和月份獲取該月所包含的所有周列表,於是實現了一個不算完整的演算法計算出了該月所包含的周列表,程式碼寫的可能比較複雜,煩請各位觀客幫忙優化。
public static void main(String[] args) {
List<Integer[]> list= getWeeks(2015, 4);
for (Integer[] integers : list) {
System.out.println(integers[0]+"~"+integers[6 ]+"日");
}
}
/**
* 給定年份和月份獲取當月周列表
* @params year
* @params month
* */
private static List<Integer[]> getWeeks(int year, int month) {
List<Integer[]> weeks = new ArrayList<Integer[]>();
// 獲取上個月的最後一天日期 和本月的最後一天日期
// 取得系統當前時間
Calendar cal = Calendar.getInstance();
cal.set (Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
int currentMonthDayCount = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
// 取得系統當前時間所在月第一天時間物件
cal.set(Calendar.DAY_OF_MONTH, 1);
// 日期減一,取得上月最後一天時間物件
cal.add(Calendar.DAY_OF_MONTH, -1);
int lastMonthDayCount = cal.get (Calendar.DAY_OF_MONTH);
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DATE, 1);
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
cal.add(Calendar.DATE, 1);
}
int currentMonthFirstSunday = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(currentMonthDayCount+" "+currentMonthFirstSunday+" "+lastMonthDayCount);
int sunday = currentMonthFirstSunday-7;
while (sunday<currentMonthDayCount) {
Integer[] weekArr = new Integer[7];
for (int i = 0; i < weekArr.length; i++) {
sunday = sunday+1;
weekArr[i] = sunday;
}
weeks.add(weekArr);
}
Integer[] firstWeek = weeks.get(0);
int firstDayOfWeek = firstWeek[0]+lastMonthDayCount;
if (firstDayOfWeek<=lastMonthDayCount) {
int index = 0;
for (int i = firstDayOfWeek; i <= lastMonthDayCount; i++) {
weeks.get(0)[index] = i;
index++;
}
}
Integer[] lastWeek = weeks.get(weeks.size()-1);
int lastDayOfWeek = lastWeek[6];
if (lastDayOfWeek>currentMonthDayCount) {
int outOfMonthCount = lastDayOfWeek-currentMonthDayCount;
int index = 1;
for (int i = outOfMonthCount; i >=1 ; i--) {
weeks.get(weeks.size()-1)[7-index] = i;
index++;
}
}
return weeks;
}
以上就是本人程式碼 控制檯輸出如下
31 3 30
27~3日
4~10日
11~17日
18~24日
25~31日
相關推薦
java 給定年份和月份 獲取該月所包含的周列表
本人在工作開發中遇到了這樣一個需求,已知年份和月份獲取該月所包含的所有周列表,於是實現了一個不算完整的演算法計算出了該月所包含的周列表,程式碼寫的可能比較複雜,煩請各位觀客幫忙優化。 public static void main(String[] arg
JAVA 輸入年份月份列印該月的日曆
請輸入年份:yyyy 請輸入月份:MM 打印出yyyy-MM日曆 <span style="font-size:18px;">package qq; import java.util.C
根據月份,獲取該月第一天和下個月第一天的Date值
使用者需求是根據月份來篩選本月的所有資料,前端傳來的是"yyyy-MM"格式的字串,這樣就需要後端處理下,弄成兩個Date去資料庫查詢。由於每個月最後一天不固定,所以想法是用當月第一天和次月第一天去查詢,轉換程式碼如下: ** * 時間轉化工具 * author: we
Oracle根據年份和月份,返回該月一共有多少天
select to_char(last_day(to_date(‘2017-02’,’yyyy-mm’)),’dd’) from dual 也可以通過編寫一共函式,根據是否是平年或者是閏年得到,在這裡充分用到了oracle自帶的函式,通過獲取該日期的最後一天,
[Java]使用Calendar類輸出指定年份和月份的日曆
題目 題目另可表述為: 1.輸入一個年份和月份,按格式輸出此月份的日曆 2.以如下格式輸出一個月份的日曆 程式碼實現 1.Calendar類的一些說明 Calendar類是一個抽象類,不能通過new的方式來獲得例項,可以使用類方法getInstance()返回
30_Js根據年和月獲取該月有幾天
js根據年和月獲取該月有幾天: /** * 判斷某年是否瑞年 */ function isRuinian(year){ if(year/4 == 0 && year/
python 給定年份、月份,返回當月對應天數
port bsp col clas 年份 style pos div 給定 模塊:calendar >>> import calendar >>> calendar.monthrange(2018,01) # 查看2018年1月份的天
sqlserver擷取日期的年份和月份
sqlserver 擷取日期年份和月份使用datepart函式,函式使用方法如下: 一、函式功能:DATEPART() 函式用於返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。 二、語法:DATEPART(datepart,date) 三、引數說明:date
sqlserver 擷取日期年份和月份使用datepart函式
轉自:https://blog.csdn.net/hzfw2008/article/details/78058916 sqlserver 擷取日期年份和月份使用datepart函式,函式使用方法如下: 一、函式功能:DATEPART() 函式用於返回日期/時間的單獨部分,比如年、月、日、小時
計算閏年, 根據年份和月份返回天數(3種方法)
翻閱筆記系列 看以前的筆記,感覺就是 我以前還了解過這個。。。 計算閏年 int year; scanf("%d",&year); bool bFlag = year%(year%1
c語言編寫程式“輸入任意一個年份和月份,列印當月日曆。”
日常生活中我們所見到的日曆如圖所示: 程式碼思路: 1. 我們想列印某年某月的日曆,我們就得知道這個月是從星期幾開始,且這個月有多少天。 2. 要想知道這個月是從星期幾開始的,就得知道上一個月的最後一天是星期幾,要想知道上一個月的最後一天是星期幾,就得
用Java發起HTTP請求與獲取狀態碼(含狀態碼列表)
滿足 null timeout etc default 語法 訪問 網頁 trace 轉自:https://blog.csdn.net/xyw591238/article/details/51072697 在使用Java請求Web程序比如訪問WebService接口時,通
任意指定一個key獲取該key所處在哪個node節點
需求:任意指定一個key獲取該key所處在哪個node節點上。 說明:目前來看用處不是太大。 #獲取指定的key在哪個slot上,該key可以是存在的或者不存在的均可。 key_slot=`redis-cli -h 5.5.5.101 -p 29001 -a abc1
獲取每個月有幾周,開始到結束的時間
const getYMWeek = (year, month) => { let list = []; let d1; let weekCount; let d =
android 獲取一個月有多少周
Calendar c = Calendar.getInstance(); c.setTime(new Date(System.currentTimeMillis())); int dayCurrentMonth = c.get(Calendar.DAY_OF
關於C#中使用訊息獲取Message.LParam所包含的資料
在C#中也可以使用Windows 訊息,包括系統訊息和自定義訊息。對於自定義訊息中,對於LParam可以在發中或者接收過程中使用自定義結構來傳遞資料如:public struct MyStruct{ public int i; public string str;}傳送訊息可以呼叫WindowsA
JS 如何獲取當前上一個月、下一個月和月份所含天數
RM javascrip AD 設置 inpu arr ear div chan 在數據報表查詢中,經常需要設置查詢的日期區間,如查詢2018-02-01至2018-02-28的整月數據,這時需要提供快捷整月查詢按鈕: 如: 一般日期年月日之間由“-”或者“/”等符合分
java輸入月份獲得該年的這個月最後一個工作日是多少號(星期一到星期五)
int a = 6; int week = 0; Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2018); cal.set(Calendar.MON
遇到的問題----java中獲取當前月份c.get(Calendar.MONTH)中月份少一個月
獲取的寫法如下: Calendar c = Calendar.getInstance();//可以對每個時間域單獨修改 int year = c.get(Calendar.YEAR);
Java獲取近兩年和近六個月(存在bug)
private List<String> getNearDate(String isYear){ List<String> resultList = new ArrayL