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

获得一周和一个月中合适的一天

颛孙炜
2023-03-14

我有一个课堂作业:

该类应该有计算两个日期之间天数的方法,返回一周中的哪一天,并给出给定日期的黄道带符号。

这是我写的代码:

import java.util.GregorianCalendar;

public class Data {
    private GregorianCalendar date;

    public Data(int year, int month, int day) {
        date = new GregorianCalendar(year, month + 1, day);
    }

    public int differenceInDaysFrom(int year, int month, int day) {
        GregorianCalendar tempDate = new GregorianCalendar(year, month, day);
        int daysBetween = (int)(tempDate.getTimeInMillis()-date.getTimeInMillis())/(1000 * 60 * 60 * 24);
        return Math.abs(daysBetween);
    }

    public String dayOfTheWeek() {
        String[] stringDays = new String[]{ "Monday",
                                            "Tuesday",
                                            "Wednesday",
                                            "Thursday",
                                            "Friday",
                                            "Saturday",
                                            "Sunday" };
        return stringDays[date.get(GregorianCalendar.DAY_OF_WEEK) - 1];
    }

    public void zodiacSign() {
        int day = date.get(GregorianCalendar.DATE);
        int month = date.get(GregorianCalendar.MONTH);

        System.out.println(day + " " + month);
    }
}

>

  • 当我用YYY\MM\DD初始化<code>日期时,在检查周日以获取近期日期时,一切都很完美,但当我输入出生日期(1991\11\14)时,它返回到星期三,但我出生在星期四。

    当我试图获取day和mont来检查黄道十二宫时,它完全崩溃了,当我输入11时返回0(对于month,days工作正常)。

    还有什么...当我开始用1到一个月的甚至差异在DaysFrom停止正常工作时

  • 共有3个答案

    谭光辉
    2023-03-14

    您需要的是第一个月,而不是第1个月>/code>-

    date = new GregorianCalendar(year, (month == 0) ? 11 : month - 1, day);
    

    夏嘉德
    2023-03-14

    看看这个:

    Days d = Days.daysBetween(startDate, endDate);
    int days = d.getDays();
    http://joda-time.sourceforge.net/faq.html#datediff
    

    你的一个问题是你每月1,而月份从0到11(我知道这很愚蠢),所以11 1是12,这是无效的。(我觉得有一个你可以设定的严格度)

    鲁华灿
    2023-03-14

    对于您的生日问题(周三或周四):

    首先,您必须将第10个月定为11月,因为0=1月。这一点已被其他答案所发现。

    然后你需要将字符串数组声明为:

        new String[] { "Sunday", "Monday", "Tuesday", 
    "Wednesday", "Thursday", "Friday", "Saturday" };
    

    因为,DAY_OF_WEEK,1=星期日,2=星期一,请检查日历类的javaDoc。那么你应该得到“星期四”

    对于十二宫法。您输入了11,因此您的日期对象接收月份参数为11 1=12。12月不是有效月份(如上所述,0-11是有效的,Jan=0 ),因此您被吓坏了。:)

     类似资料:
    • 如何通过给出一个月中的一周和一周中的一天来获得日期。 示例:如果我需要2018年11月的第三个星期二。 月周:3,周日:3 预计日期:2018年11月20日 但我们得到的价值是:2018年11月13日。因为本月的开始日(星期四)少于预期的日期(星期二)。 我怎样才能得到正确的日期??

    • 问题内容: 指定日期时: 我怎么知道这是每月的第三周? 如果我要这个约会怎么办? 我知道如果给定的日期是in年(双性恋),则只有2月有4周 问题答案:

    • 我想知道特定月份/年份的第一个星期一的日期。 我所拥有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道这个月的第一个星期一,最好是整数或整数值。 例如: 我有2014年和1月,这个月的第一个星期一是6号,所以我想返回6号。 问题: 我原以为我可以用做到这一点,但我在设置日历时遇到了问题,因为只有年份和月份可用。此外,我不知道如何使用返回月份/年份的第一个星期一。

    • 问题内容: 我正在寻找获取上个月第一天和最后一天的最佳方法。我使用它们进行SQL查询以获取上个月的统计信息。 我认为这是最好的方法,更优化但又不那么全面,有人有另一种方法可以做到这一点吗? 谢谢!! 问题答案: 在PHP 5.3中,您可以使用类:

    • 问题内容: 如何在Java中找出最后一个月及其年份 例如,如果今天是2012年10月10日,则结果应为Month = 9和year = 2012;如果今天是2013年1月10日,则结果应为Month = 12和year = 2012 问题答案: 您的解决方案在这里,但您需要使用减法来代替加法 然后,您可以在上调用getter以获取适当的字段

    • 问题内容: 我想获取特定月份/年份中第一个星期一的日期。 我有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道本月的第一个星期一,最好是一个int或Integer值。 例如: 我有2014年和1月(1月),这个月的第一个星期一是6号,所以我想返回6。 问题: 我以为可以做到这一点,但是在设置日历(仅提供年和月)时已经遇到了麻烦。此外,我不确定如何使用返回实际的月