(Android) รับวันแรกของสัปดาห์

จะได้วันแรกของสัปดาห์ได้อย่างไร ในเมื่อเรารู้วันที่ใดวันหนึ่งในสัปดาห์

ฉันรู้เดือนปัจจุบัน ปีปัจจุบัน และวันที่ปัจจุบันของสัปดาห์ แล้วมีวิธีรู้วันแรกของสัปดาห์ปัจจุบันบ้างไหม

ขอบคุณ


person Yuya Okada    schedule 02.08.2014    source แหล่งที่มา
comment
ลองค้นหาใน google แล้วหรือยัง..?? สิ่งที่คุณได้ลอง.?   -  person SilentKiller    schedule 02.08.2014


คำตอบ (4)


สวัสดีถ้าคุณต้องการวันแรกของสัปดาห์ปัจจุบัน "วันจันทร์"

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,  Calendar.MONDAY-calendar.get(Calendar.DAY_OF_WEEK));
  Log.w(TAG, "first day of week" + calendar.getTime());

2 หากคุณต้องการวันแรกของสัปดาห์ในวันที่ 20-12-2559

Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, 20);
        calendar.set(Calendar.MONTH,Calendar.DECEMBER);
        calendar.set(Calendar.YEAR,2016);
        calendar.add(Calendar.DAY_OF_MONTH,Calendar.MONDAY - calendar.get(Calendar.DAY_OF_WEEK));
    Log.w(TAG,"first day of week:"+calendar.getTime());

ฉันหวังว่านี่จะช่วยคุณได้

person mlika    schedule 20.12.2016

ลองสิ่งนี้:

// รับวันนี้และเวลาที่ชัดเจนของวัน

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day !
cal.clear(Calendar.MINUTE);
cal.clear(Calendar.SECOND);
cal.clear(Calendar.MILLISECOND);

// เริ่มต้นสัปดาห์นี้ในหน่วยมิลลิวินาที

cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
System.out.println("Start of this week:       " + cal.getTime());
System.out.println("... in milliseconds:      " + cal.getTimeInMillis());

ข้อมูลอ้างอิง :วิธีรับวันแรก ของสัปดาห์และเดือนปัจจุบัน?

หวังว่านี่อาจช่วยคุณได้!

person Krupa Patel    schedule 02.08.2014

สวัสดีถ้าคุณต้องการวันแรกของสัปดาห์ปัจจุบัน "วันจันทร์"

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,  Calendar.MONDAY-calendar.get(Calendar.DAY_OF_WEEK));
Log.w(TAG, "first day of week" + calendar.getTime());

2 หากคุณต้องการวันแรกของสัปดาห์ในวันที่ 20-12-2559

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 20);
calendar.set(Calendar.MONTH,Calendar.DECEMBER);
calendar.set(Calendar.YEAR,2016);
calendar.add(Calendar.DAY_OF_MONTH,Calendar.MONDAY - calendar.get(Calendar.DAY_OF_WEEK));
Log.w(TAG,"first day of week:"+calendar.getTime());

ฉันหวังว่านี่จะช่วยคุณได้

person mlika    schedule 20.12.2016

tl;dr

วิธีการสมัยใหม่ใช้คลาส java.time แทนที่จะเป็นคลาส Calendar & Date แบบเก่าที่ยุ่งยาก

LocalDate.of( 2017 , Month.MARCH , 23 )
         .with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) )

LocalDate

คลาส LocalDate แสดงถึงวันที่เท่านั้น ค่าที่ไม่มีเวลาของวันและไม่มีเขตเวลา

LocalDate someDate = LocalDate.of( 2017 , Month.MARCH , 23 ) ;

TemporalAdjuster

เพื่อให้ได้วันแรกของสัปดาห์ (a) ตัดสินใจว่าวันแรกของสัปดาห์คืออะไรสำหรับคุณ (b) ใช้ TemporalAdjuster การใช้งานที่กำหนดไว้ใน TemporalAdjusters เพื่อรับวันที่สำหรับวัตถุ DayOfWeek enum เฉพาะ

LocalDate ld = someDate.with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) ) ;

เกี่ยวกับจาวา.ไทม์

เฟรมเวิร์ก java.time คือ สร้างขึ้นใน Java 8 และใหม่กว่า คลาสเหล่านี้มาแทนที่คลาสวันที่-เวลา ดั้งเดิม แบบเก่าที่ยุ่งยาก เช่น java.util.Date, Calendar, & SimpleDateFormat

โปรเจ็กต์ Joda-Time อยู่ใน โหมดการบำรุงรักษา แนะนำให้ย้ายไปยัง java.time คลาส

หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่บทช่วยสอนของ Oracle และค้นหา Stack Overflow เพื่อดูตัวอย่างและคำอธิบายมากมาย ข้อมูลจำเพาะคือ JSR 310

จะรับคลาส java.time ได้ที่ไหน?

  • Java SE 8, Java SE 9, and later
    • Built-in.
    • ส่วนหนึ่งของ Java API มาตรฐานพร้อมการใช้งานแบบรวมกลุ่ม
    • Java 9 เพิ่มคุณสมบัติและการแก้ไขเล็กน้อย
  • Java SE 6 and Java SE 7
    • Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport.
  • Android
person Basil Bourque    schedule 10.05.2017