【问题标题】:What's the difference between Calendar.getInstance().get(Calendar.DAY_OF_WEEK) and Calander.DAY_OF_WEEK in javajava中的Calendar.getInstance().get(Calendar.DAY_OF_WEEK)和Calander.DAY_OF_WEEK有什么区别
【发布时间】:2020-12-05 21:29:57
【问题描述】:

我是 Kotlin 的新手,在学习课程时,您在当前工作日进行了一些工作。

课程使用这个java代码来获取:

import java.util.*

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

但我不明白为什么 Calendar.DAY_OF_WEEK 也不起作用,或者两者之间有什么区别。 谢谢解释

【问题讨论】:

  • 我不确定您对什么特别感到困惑。 DAY_OF_WEEK 是 an int constant(一个“字段编号”,表示您要检索哪条数据)。 Calendar.get 是你如何获取特定字段的值,但显然你必须指定哪个你想要的字段(在这种情况下是DAY_OF_WEEK)。你不能对DAY_OF_WEEK 本身做任何事情;它只是一个值为 7 的 int,而不是访问器。
  • 日历在内部使用一个数组来存储年、月等字段的值。Calendar.DAY_OF_WEEK 只是这个数组的一个常量索引。
  • 我建议你不要使用Calendar。该课程设计不良且早已过时。而是使用例如LocalDate 和DayOfWeek,两者都来自java.time, the modern Java date and time API。

标签: java kotlin calendar java.util.calendar


【解决方案1】:

Calendar.DAY_OF_WEEK 是一个常数,用于访问 Calendar 对象中的字段。

Calendar.getInstance().get(Calendar.DAY_OF_WEEK) 使用这个常数从日历中读取“星期几”字段的值。

这有点不寻常的设计。 Calendar 类的设计者没有为所有日历字段添加诸如“getDayOfWeek”、“setDayOfWeek”和“addDayOfWeek”之类的数十种方法,而是添加了“get”、“set”和“add”方法,它们将数字字段标识符作为参数。

请注意,Calendar 现在被认为是“遗留”类 - 对于新代码,最好使用 java.time 包中的类。获取星期几的现代方法是:

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

【讨论】:

    【解决方案2】:

    我建议您不要使用 java.util 包中过时的容易出错的日期/时间 API。使用来自java.time 包的modern date/time API。通过 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());
        }
    }
    

    输出:

    SUNDAY
    7
    

    Calendar.DAY_OF_WEEK 也不起作用,或者有什么区别 两者之间。谢谢解释

    Calendar.DAY_OF_WEEK 是一个常数,表示 get 和 set 的字段编号,表示星期几。

    【讨论】:

      【解决方案3】:

      Calendar.DAY_OF_WEEK 只是一个常量,用于告诉日历 API 您要请求哪些信息: https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#DAY_OF_WEEK

      Calendar.getInstance() 给你一个日历实例。这会将当前时区和本地时间等因素考虑在内。 get() 方法允许您使用上面的常量获取信息。 https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#get(int)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-10
        • 2014-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-10
        • 2011-02-13
        相关资源
        最近更新 更多