简体   繁体   中英

What's the difference between Calendar.getInstance().get(Calendar.DAY_OF_WEEK) and Calander.DAY_OF_WEEK in java

I'm new to Kotlin and while doing a course there was a bit where you worked with the current weekday.

The course used this java code to get it:

import java.util.*

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

but I don't understand why Calendar.DAY_OF_WEEK wouldn't work either, or whats the difference between the two. Thanks for the explanation

Calendar.DAY_OF_WEEK is a constant number, used to access fields within the Calendar object.

Calendar.getInstance().get(Calendar.DAY_OF_WEEK) uses this constant number to read the value of the "day of week" field from the calendar.

This is somewhat unusual design. Instead of adding dozens of methods like "getDayOfWeek", "setDayOfWeek", and "addDayOfWeek" for all the calendar fields, the designers of the Calendar class added "get" "set" and "add" methods that take a numeric field identifier as the parameter.

Note that Calendar is nowadays considered a "legacy" class - for new code it's better to use the classes in the java.time package. The modern way to get today's day of the week is:

DayOfWeek dow = LocalDate.now().getDayOfWeek();

I suggest you do not use the outdated error-prone date/time API from java.util package. Use the modern date/time API from java.time package. Learn more about it from Trail: Date Time

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        System.out.println(LocalDate.now().getDayOfWeek());
        System.out.println(LocalDate.now().getDayOfWeek().getValue());
    }
}

Output:

SUNDAY
7

Calendar.DAY_OF_WEEK wouldn't work either, or whats the difference between the two. Thanks for the explanation

Calendar.DAY_OF_WEEK is a constant representing the field number for get and set indicating the day of the week.

Calendar.DAY_OF_WEEK is simply a constant to tell the Calendar API which info you'd like to request: https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#DAY_OF_WEEK

Calendar.getInstance() gives you a Calendar instance. This takes things like the current timezone and local time into account. The get() method allows you to get information using the constants above. https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#get(int)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM