java获取星期几不准确

标签 java date

我试图确定一周中的哪一天是该月的第一天,但​​由于某种原因,它没有返回正确的一周中的一天。

下面是我的代码:

CalendarMonth[] months = CalendarUtils.constructMonthViewArray(new GregorianCalendar());


    public static CalendarMonth[] constructMonthViewArray(Calendar cal) {
        CalendarMonth[] months = new CalendarMonth[CALENDAR_GRID_SIZE];


        int year = cal.get(cal.YEAR);
        int month = cal.get(cal.MONTH);;
        // calculate how many days in the month
        int numOfDays = getNumOfDaysInMonth(cal);
        // calculate what day(mon-sunday) is the 1st of the month
        int firstDayOfMonth = getFirstDayOfMonth(cal);



private static int getFirstDayOfMonth(Calendar cal) {
        int firstDay = cal.get(Calendar.DAY_OF_WEEK);

        Log.d(TAG, "");

        // decrement it because our array deals with values 0-6(indexes)
        firstDay--;


        if (firstDay == 0) {
            firstDay = 6;
        } else {
            // decrement again so that the days start from 0.
            firstDay--;
        }
        return firstDay;
    }

来自“int firstDay = cal.get(Calendar.DAY_OF_WEEK);”的行无法给我正确的星期几,并返回值 2 以获取本月的第一天(2011 年 1 月),而该月的第一天是星期六(7)。

我错过了什么吗?我已经调试并检查了 cal 变量设置的月份、年份和日期,它确实指示了今天的日期已更正,但是当我获取星期几时,它没有得到值 7。

最佳答案

我无法重现您遇到的问题。正如 Michael 所说,您还没有向我们展示很多代码,但 Calendar.getDayOfWeek 绝对有效:

import java.util.*;

public class Test {
    public static void main(String[] args) {
        Calendar calendar = new GregorianCalendar();
        calendar.set(2011, 0, 1); // 0 = January
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // Prints 7
    }
}

您是否忘记了 java.util.Calendar 中的月份是从 0 开始的?

如果您可以制作一个类似的简短但完整的程序来显示一周中的错误日期,请发布它。

事实上,您在 getFirstDayOfMonth 内递减 firstDay 两次 似乎有点奇怪,而且事实上它并不真正反射(reflect)方法的名称(如迈克尔提到的)。

最后,我对 Java 日期/时间处理的一贯建议:如果您可以可能使用 Joda Time而不是java.util.Calendar,这样做。这是一个非常非常好的 API。

关于java获取星期几不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645608/

相关文章:

java - 我想从抛出Java程序的当前异常中提取一个字符串

java - 将字符串转换为日期 - Java

python pandas 时间序列选择一年中的某一天

php - PHP中给定日期的下一个工作日

javascript - 检查 Karma Jasmine 单元测试用例中的日期格式

java - Guava 事件总线 : would/should this be GWT-compatible?

java - 在正在运行的 java jar 中打开文件

java - 尝试访问文件作为资源时不支持的协议(protocol) : jndi with Websphere 6. 1

java - linkedHashSet 中的有序插入,有什么高性能的方法吗?

javascript - 日期代码在 JS 中不起作用