รับวันที่ของสัปดาห์ตั้งแต่วันจันทร์ถึงวันศุกร์จากวันที่กำหนด [ซ้ำ]

ฉันต้องการรับวันที่ของสัปดาห์ตั้งแต่วันจันทร์ถึงวันศุกร์จากวันที่กำหนด

สมมติว่าวันที่ระบุคือ 6-2-2013

ฉันต้องการผลลัพธ์:

Monday    4-2-2013
Tuesday   5-2-2013
Wednesday 6-2-2013
Thursday  7-2-2013
Friday    8-2-2013

หรือแม้ว่าฉันจะมีสัปดาห์ที่ 6 ...ฉันจะบรรลุผลเกี่ยวกับได้อย่างไร

ฉันได้รับหมายเลขสัปดาห์จากโค้ดด้านล่าง

Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 6);
c.set(Calendar.MONTH, 1);
c.set(Calendar.YEAR, 2013);

int weekNo = c.get(Calendar.WEEK_OF_YEAR);

person sdg    schedule 11.02.2013    source แหล่งที่มา
comment
ตรวจสอบ stackoverflow.com/q/8652514/1777090 นั่นอาจจะช่วยได้   -  person MysticMagicϡ    schedule 11.02.2013


คำตอบ (3)


ตั้งแต่วันที่ 6-2-2556:

        GregorianCalendar c = new GregorianCalendar(2013, 1, 6);
        c.add(Calendar.DAY_OF_YEAR, Calendar.MONDAY - c.get(Calendar.DAY_OF_WEEK));
        DateFormat df = new SimpleDateFormat("d-M-yyyy");
        while(c.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) {
            if (c.get(Calendar.YEAR) == 2013) {
                System.out.printf("%-10tA%10s%n", c.getTime(), df.format(c.getTime()));
            }
            c.add(Calendar.DAY_OF_YEAR, 1);
        }
prints

    Monday      4-2-2013
    Tuesday     5-2-2013
    Wednesday   6-2-2013
    Thursday    7-2-2013
    Friday      8-2-2013
from week 6 of 2013:

    GregorianCalendar c = new GregorianCalendar(2013, 0, 1);
    c.add(Calendar.WEEK_OF_YEAR, 6 - 1);
    c.add(Calendar.DAY_OF_YEAR, Calendar.MONDAY - c.get(Calendar.DAY_OF_WEEK));
        DateFormat df = new SimpleDateFormat("d-M-yyyy");
        while(c.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) {
            if (c.get(Calendar.YEAR) == 2013) {
                System.out.printf("%-10tA%10s%n", c.getTime(), df.format(c.getTime()));
            }
            c.add(Calendar.DAY_OF_YEAR, 1);
        }

พิมพ์

Monday      4-2-2013
Tuesday     5-2-2013
Wednesday   6-2-2013
Thursday    7-2-2013
Friday      8-2-2013
person Evgeniy Dorofeev    schedule 11.02.2013

ลองสิ่งนี้...ฉันได้แก้ไขและเพิ่มการเปลี่ยนแปลงเพิ่มเติมในรหัส Achintya Jha...ทำงานได้ดี ขอบคุณ Achintya Jha

Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 14);
c.set(Calendar.MONTH, 1);
c.set(Calendar.YEAR, 2013);

int weekNo = c.get(Calendar.WEEK_OF_YEAR);

//Set the Week No
c.set(Calendar.WEEK_OF_YEAR, weekNo);

c.clear();

//Set the Week Year and the Week No
c.set(Calendar.WEEK_OF_YEAR, weekNo);
c.set(Calendar.YEAR, 2013);


SimpleDateFormat formatter = new SimpleDateFormat("EEE dd/MM/yyyy"); // PST`
//Get Week Start Date 
Date startDate = c.getTime();
//Now it will be sunday so add plus one so now it becomes Monday
c.add(Calendar.DATE, 1);
for (int i = 0; i < 5; i++) {
    //From Monday to Friday Dates will be Printed
    System.out.println(formatter.format(c.getTime()));
    c.add(Calendar.DATE, 1);
}
person Iam4fun    schedule 11.02.2013

public static void main(String[] args) {
    getWeekOfDates(2013, 2, 11);

}

private static void getWeekOfDates(int year, int month, int day) {

    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    int weekOfMonth = c.get(Calendar.WEEK_OF_MONTH);
    c.set(Calendar.WEEK_OF_MONTH, weekOfMonth);

    DateFormat df = new SimpleDateFormat("EEE dd-MM-yyyy");
    for (int i = 0; i < 5; i++) {
        System.out.println(df.format(c.getTime()));
        c.add(Calendar.DATE, 1);
    }

}

ลองสิ่งนี้: ฉันแก้ไขตามความต้องการของคุณ

เอาท์พุท:

Mon 11-03-2013
Tue 12-03-2013
Wed 13-03-2013
Thu 14-03-2013
Fri 15-03-2013
person Achintya Jha    schedule 11.02.2013
comment
ฉันจะลองตอนนี้...ขอบคุณ - person sdg; 11.02.2013
comment
สมมติว่าวันที่ฉันระบุคือ 14/2...มันยังเพิ่มวันที่ในสัปดาห์หน้า (เช่น..) สัปดาห์หน้าวันจันทร์และวันอังคารด้วย...ฉันคิดว่าฉันต้องเปลี่ยนรหัสของคุณเล็กน้อย...ขอบคุณ - person sdg; 11.02.2013
comment
@sdg ฉันแก้ไขรหัสของฉันตามความต้องการของคุณ - person Achintya Jha; 11.02.2013
comment
ใช่แล้ว ขอบคุณ..แต่ถ้าฉันให้วันที่เป็น 14/2..???????? ผลลัพธ์ที่ได้คือความแตกต่าง - person sdg; 11.02.2013
comment
@sdg 14 เป็นวันพฤหัสบดี คุณต้องการพิมพ์เฉพาะวันพฤหัสบดีและวันศุกร์เท่านั้นใช่ไหม - person Achintya Jha; 11.02.2013
comment
ผู้ใช้สามารถเลือกวันที่ใดก็ได้ในหนึ่งสัปดาห์...สมมติว่าพวกเขาเลือกวันพฤหัสบดีในสัปดาห์นั้นตั้งแต่วันจันทร์ถึงวันศุกร์ที่จะพิมพ์..เช่น 11/2,12/2,13/2,14/2,15/2 - person sdg; 11.02.2013
comment
@sdg คุณคิดวิธีแก้ปัญหาที่ใช้งานได้หรือไม่? คุณช่วยกรุณาแบ่งปันเพื่อช่วยเหลือผู้อื่นที่มีปัญหาคล้าย ๆ กันได้ไหม? ขอบคุณ - person Rigorous implementation; 13.11.2013