1. 程式人生 > >java 給定年份和月份 獲取該月所包含的周列表

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