我写了代码,它使用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。任何帮助都将不胜感激。
尽量避免使用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;
}
一周的第一天是从当前区域设置派生的。如果不设置日历的区域设置(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天。 我现有的代码如下,但似乎无法按预