วิธีที่ง่ายที่สุดในการรับวันปัจจุบันของสัปดาห์ใน Android คืออะไร


114

วิธีใดเป็นวิธีที่ง่ายที่สุดในการรับวันปัจจุบันของสัปดาห์ใน Android

คำตอบ:


267

ใช้CalendarคลาสJava

Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK); 

switch (day) {
    case Calendar.SUNDAY:
        // Current day is Sunday
        break;
    case Calendar.MONDAY:
        // Current day is Monday
        break;
    case Calendar.TUESDAY:
        // etc.
        break;
}

สิ่งนี้ใช้ได้กับ Java ไม่ใช่ Android คลาส "ปฏิทิน" มาจากแพ็คเกจ java.util
Navin Israni

7
@Navin Israni คุณหมายถึงอะไร? ฉันไม่เห็นปัญหาใด ๆ ในการใช้ java.util มีการเพิ่มปฏิทินในระดับ API 1
เหลือเชื่อ

33
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
// 3 letter name form of the day
System.out.println(new SimpleDateFormat("EE", Locale.ENGLISH).format(date.getTime()));
// full name form of the day
System.out.println(new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date.getTime()));

ผลลัพธ์ (สำหรับวันนี้):

กกท.
วันเสาร์

อัพเดท: java8

LocalDate date = LocalDate.now();
DayOfWeek dow = date.getDayOfWeek();
System.out.println("Enum = " + dow);

String dayName = dow.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println("FULL = " + dayName);

dayName = dow.getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);
System.out.println("FULL_STANDALONE = " + dayName);

dayName = dow.getDisplayName(TextStyle.NARROW, Locale.ENGLISH);
System.out.println("NARROW = " + dayName);

dayName = dow.getDisplayName(TextStyle.NARROW_STANDALONE, Locale.ENGLISH);
System.out.println("NARROW_STANDALONE = " + dayName);

dayName = dow.getDisplayName(TextStyle.SHORT, Locale.ENGLISH);
System.out.println("SHORT = " + dayName);

dayName = dow.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ENGLISH);
System.out.println("SHORT_STANDALONE = " + dayName);

ผลลัพธ์ (สำหรับวันนี้):

Enum = SATURDAY
FULL = Saturday
FULL_STANDALONE = Saturday
NARROW = S
NARROW_STANDALONE = 6
SHORT = Sat
SHORT_STANDALONE = Sat

22
Calendar.getInstance().get(Calendar.DAY_OF_WEEK)

หรือ

new GregorianCalendar().get(Calendar.DAY_OF_WEEK);

เช่นเดียวกับใน Java ไม่มีอะไรเป็นพิเศษสำหรับ Android


2
สิ่งนี้ส่งคืน int
Himanshu Rawat

คุณสามารถตรวจสอบได้จากปฏิทินวันอาทิตย์เป็นต้น
Shivam Tripathi

16

Java 8 datetime APIทำให้ง่ายขึ้นมาก:

LocalDate.now().getDayOfWeek().name()

จะคืนชื่อวันเป็น String

เอาท์พุท: วันพฤหัสบดี


3
ดี! แต่ต้องใช้ API ระดับ 26 ใน Android
dnhyde

11
public String weekdays[] = new      DateFormatSymbols(Locale.ITALIAN).getWeekdays();
 Calendar c = Calendar.getInstance();
 Date date = new Date();
 c.setTime(date);
 int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
 System.out.println(dayOfWeek);
 System.out.println(weekdays[dayOfWeek]);

9

หากคุณไม่ต้องการใช้คลาสปฏิทินเลยคุณสามารถใช้สิ่งนี้ได้

String weekday_name = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(System.currentTimeMillis());

กล่าวคือผลลัพธ์คือ

"Sunday"

5

นี่คือแนวทางง่ายๆของฉันในการรับวันปัจจุบัน

public String getCurrentDay(){

    String daysArray[] = {"Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday", "Saturday"};

    Calendar calendar = Calendar.getInstance();
    int day = calendar.get(Calendar.DAY_OF_WEEK);

    return daysArray[day];

}

2
ฉันไม่แน่ใจว่าทำไม แต่ในกรณีของฉันตัวเลขวันเริ่มต้นจาก 1 ไม่ใช่จาก 0 ดังนั้นอาร์เรย์ของฉันจึงมีลักษณะดังนี้String[] days = {"?", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
ดร. Failov

คุณสามารถกำจัด "?" แล้วชอบint day = calendar.get(Calendar.DAY_OF_WEEK) - 1;
Qadir Hussain

4

การใช้ทั้งสองวิธีนี้คุณจะพบว่าง่ายถ้าคุณไม่ใช้เจ็ดวันที่ผ่านมา (currentdaynumber + 7-1)% 7, (currentdaynumber + 7-2)% 7 ..... ไม่เกิน 6

public static String getDayName(int day){
    switch(day){
        case 0:
            return "Sunday";
        case 1:
            return "Monday";
        case 2:
            return "Tuesday";
        case 3:
            return "Wednesday";
        case 4:
            return "Thursday";
        case 5:
            return  "Friday";
        case 6:
            return "Saturday";
    }

    return "Worng Day";
}
public static String getCurrentDay(){
    SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);
    Calendar calendar = Calendar.getInstance();
    return dayFormat.format(calendar.getTime());

}

1

คุณสามารถใช้รหัสนั้นสำหรับ Kotlin ซึ่งคุณจะใช้คลาสปฏิทินจาก java ไปยัง Kotlin

    val day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)

    fun dayOfWeek() {
    println("What day is it today?")
    val day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)
    println( when (day) {
      1 -> "Sunday"
      2 -> "Monday"
      3 -> "Tuesday"
      4 -> "Wednesday"
      5 -> "Thursday"
      6 -> "Friday"
      7 -> "Saturday"
      else -> "Time has stopped"
   })
 }

-10

เนื่องจากDAY_OF_WEEKในคลาสGregorianCalenderเป็นฟิลด์แบบคงที่คุณสามารถเข้าถึงได้โดยตรงในฐานะคนโง่

int dayOfWeek = GregorianCalender.DAY_OF_WEEK;


8
ไม่เพียงแค่ไม่มี. เลขที่
Pkmmte

คุณสามารถใช้คลาสปฏิทินสำหรับ java และ Kotlin ได้อย่างง่ายดาย
mahmoud Zahran
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.