当前位置: 首页 > 知识库问答 >
问题:

如何使java日历从星期一开始工作日?

斜昊空
2023-03-14

我写了代码,它使用Java日历并显示时间戳的DAY_OF_WEEK。但是默认日历从星期日(1)开始。我希望它从星期一开始,例如。它应该在星期一返回1。这是我的代码:

Calender c = Calender.getInstance(TimeZone.getInstance("Australia/Sydney"));
c.setTimeInMillis(1413831601032L);
c.setFirstDayOfWeek(Calender.Monday);
System.out.println(c.get(c.DAY_OF_WEEK));

setFirstDayOfWeek()在这种情况下没有帮助。

星期二的输出应该是2,但它显示我是3。任何帮助都将不胜感激。

共有2个答案

孟栋
2023-03-14

尽量避免使用get返回的原始值。在您的代码中,您应该始终针对Calendar类中定义的常量进行检查。这有一个很大的优势,它更具可读性。

考虑以下片段

在这里很难找到一周中的哪一天你想做什么动作

switch (c.get(Calendar.DAY_OF_WEEK)) {
    case 2: 
        // do something
        ; break;
    case 3: 
        // do something
        break;

}

这个例子更能自我解释

switch (c.get(Calendar.DAY_OF_WEEK)) {
    case Calendar.MONDAY: 
        // do something
        ; break;
    case Calendar.TUESDAY: 
        // do something
        break;

}
赫连越
2023-03-14

一周的第一天是从当前区域设置派生的。如果不设置日历的区域设置(calendar.getInstance(locale),或新的GregoriaCalendar(locale)),它将使用系统的默认设置。

public static void main(String[] args) {
    Calendar c = new GregorianCalendar();
    System.out.println(Locale.getDefault() + ": " + c.getFirstDayOfWeek());
}

这应该显示不同语言/国家的不同JVM参数的不同输出:

-Duser.language=en -Duser.country=US -> en_US: 1 (Sunday)
-Duser.language=en -Duser.country=GB -> en_GB: 2 (Monday)

此外,还可以使用方法setFirstDayOfWeek()设置一周的第一天。该方法只能影响月的周或年的周的返回值。对于一周中的第二天,它什么也不做。

请参阅此处了解更多信息

此外,如果您看到Calendar.java,您将看到天的值是恒定的,如下所示。这就是为什么无论一周的第一天设置为什么,它都会在星期一返回1。

公共final staticint SUNDAY=1;

公共final staticint星期一=2;......

公共final staticint星期六=7;

根据设置的第一天,您可以执行以下操作并操作数据。

[c.get(Calendar.DAY_OF_WEEK) - 1]);
 类似资料:
  • 问题内容: 我目前有此代码: 这是Date对象的扩展。 我需要做同样的事情,但是让日历返回我从星期一开始而不是星期日的一周中的几天。 问题答案: 您只需要使用iso8601日历获取一周中的第一天,其中第一个工作日为星期一,并添加0至6天。尝试这样:

  • 问题内容: 我使用DAYOFWEEK()在MySQL的函数返回 1 为 星期日 。但在我国,一周从 星期一 开始,而不是 星期日 。是否有机会从格式如下的MySQL中获取dayofweek:(1-星期一,2-星期二,…)? 问题答案: 使用代替,从星期一开始。 如果您需要从索引1开始,请使用或。

  • 问题内容: 我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。 这是我尝试使用Java的Calendar的方法: 我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时

  • 问题内容: 我正在尝试提取今天日期的月份。我有这个 但是当出现消息对话框时,它会显示数字 ,今天是数字。如何设置它以显示它是星期几? 问题答案: 返回星期几。星期日为0,星期六为6。 请参阅Java文档 根据下面给出的评论

  • 问题内容: 因此,对于一个开始日期和结束日期,我想确定在这两个日期之间发生的一周中的特定天数。 那么多少个星期一,星期二等 我知道我可以在“开始日期”和“结束日期”之间循环并每天检查一次,但是可能相差很多天。我更喜欢不需要循环的东西。有任何想法吗?(必须在SQL Server2005+中受支持) 问题答案: 鉴于我 认为 您正在尝试获得的结果,应该这样做:

  • 问题内容: 如果可能的话,在以下情况下,我希望使用joda或非joda解决方案 假设我的一周从2012年5月2日开始,给定的当前日期为02/22/2011。我需要计算给定当前日期的星期开始和结束日期。因此,我的解决方案的星期应该从02/19开始,而星期在02/25结束。为简单起见,我将我的工作日设置为02/05/2011,但是可能是任何一天,我的工作日始终为7天。 我现有的代码如下,但似乎无法按预