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

接受可变日期和最终整数并计算日差[duplicate]

邹宏峻
2023-03-14

我有一个关于方法的赋值,和2个变量的Date类型:

  • \u借用日期(也与日期方法相关)

我还有一个int MAX_DAYS=30

我需要设置一个借用日期,然后接受一个归还日期,如果归还日期的天数大于30(最长天数),与借用日期相比,我应该输出true。

public class Book {
    private String _title;
    private String _author;
    private int _yearPublished;
    private int _noOfPages;
    private boolean _borrowed;
    private String _studentName;
    private Date _borrowedDate;
    private Date _returnDate;
    final int MAX_DAYS = 30;
    final int FINE = 5;
    final int MIN_YEAR =1800;
    final int MAX_YEAR = 2018;
    final int DEFAULT_YEAR = 2000;
    int d1;
    int days;

    public Book( String title, String author, int yearPublished, int noOfPages)
    {
        if (yearPublished <MIN_YEAR || yearPublished >MAX_YEAR){
            _yearPublished = DEFAULT_YEAR;
            _title = title;
            _author = author;
            _noOfPages = noOfPages;}
        else{
            _title = title;
            _author = author;
            _yearPublished = yearPublished;
            _noOfPages = noOfPages;

        }
    }

    public Book ( Book other) {
        _title = other._title;
        _author = other._author;
        _yearPublished = other._yearPublished;
        _noOfPages = other._noOfPages;
        _borrowed = other._borrowed;
        _studentName = other._studentName;
        _borrowedDate = other._borrowedDate;
        _returnDate = other._returnDate;

    }

    public boolean equal(Book compare){
        return ((_title == compare._title)&&(_author==compare._author)&&(_yearPublished==compare._yearPublished)
            &&(_noOfPages==compare._noOfPages)&&(_borrowed==compare._borrowed)&&(_studentName==compare._studentName)
            &&(_borrowedDate==compare._borrowedDate)&&(_returnDate==compare._returnDate));
    }

    boolean olderBook(Book other){
        return other._yearPublished > _yearPublished;
    }

    public int getYear(){
        return _yearPublished;
    }

    public int getPages(){
        return _noOfPages;
    }

    public String getTitle(){
        return _title;
    }

    public String getAuthor(){
        return _author;
    }

    public boolean getBorrowed(){
        return _borrowed;
    }

    public String toString(){
        return "Title:"+_title+"Author:"+_author+ "Year:"+_yearPublished+","+_noOfPages+"pages";
    }

    private  int calculateDate(int day, int month,int year){
        if(month<3){
            year--;
            month += 12;
        }
        return  365*year+year/4-year/100+year/400+((month+1)*306)/10+(day-62);
    }

    public void borrowBook(String name, Date d){
        _studentName = name;
        _borrowedDate = new Date(d);
        _borrowed = true;
    }

    public boolean returnBook(Date d){
        _returnDate = new Date(d);
        _studentName = null;

        return (_returnDate.after(_borrowedDate));
    }

    public int howLongBorrowed(Date d){
        return 5;   
    }

    public void setYear(int n){
        if(n > MAX_YEAR || n<MIN_YEAR){
            _yearPublished = _yearPublished;
        }
        else
            _yearPublished = n;
    }

    public Date getBorrowedDate(){
        return _borrowedDate;   
    }

    public String getStudentName(){
        return _studentName;
    }

    public Date getReturnDate(){
        return _returnDate;
    }

    public void setTitle(String s){
        _title = s;
    }

    public void setAuthor(String s){
        _author = s;
    }

    public void setPages(int n){
        _noOfPages = n;
    }

    public boolean sameAuthor(Book other){
        return other._author.equals(_author);
    }
}

代码还没有完成,只是在这个特定的问题上遇到了麻烦。我试过明显的

。之后可以工作,但我需要在30天后具体完成,仅此而已。


共有1个答案

芮明知
2023-03-14

如果您使用的是Java8或更高版本,最好使用LocalDate而不是Java。util。日期

LocalDate today = LocalDate.now();
LocalDate later = today.plusDays(30);

LocalDate对象与方法isBeforeisEqualisAfter进行比较。

如果您使用的是早期版本,或者您只是出于某种原因更喜欢使用Date,您需要一个日历实例来完成此操作:

Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 30);
 类似资料:
  • 问题内容: 我觉得很有趣,Java(或java.util库)没有内置函数来计算日期差。我想从另一个减去一个日期,以获得它们之间的经过时间。做这个的最好方式是什么? 我知道简单的方法是将时间差以毫秒为单位,然后将其转换为天。但是,我想知道这是否在所有情况下都有效(带夏令时等)。 问题答案: 如果您关注开放源代码,那么Java并不会丢失太多:尝试Joda-Time。

  • 我试图创建一个小应用程序来保存许可证数据,我允许用户输入赎回日期和许可证长度。 我想创建一天的剩余字段,用户可以在其中查看他们在赎回新许可证之前还有多少天。 我用过jxDatepicker 并且有三个组合框,用户可以在其中选择许可证可用的年、月和日数 编辑 我想我让一些人很困惑。或者我不明白这怎么能解决我的问题。我会试着更详细地描述 脚本 用户可以使用该应用程序记录他们的许可证,他们输入许可证兑换

  • 问题内容: 我试图找出表中某些字段之间的时间。但是由于我正在使用Postgresql :(( 我无法使用DATEDIFF函数。我在网上找不到任何清晰的指南/教程,这些指南/教程显示了如何在Postgres中执行类似的操作,因此我需要做同样的事情的帮助但在Postgres 我假设如果我使用支持DATEDIFF函数的RDBMS,则此查询将起作用,因此,基本上我的问题是如何更改它,以便它使用Postgr

  • 问题内容: 在我的代码中,日期之间的差异是错误的,因为它应该是38天而不是8天。我该如何解决? 问题答案: 问题出在变量中。月以Capital M表示。 尝试更改为: 有关更多信息,请参见此javadoc。 编辑: 这是代码,如果您想以注释的方式打印差异: 希望对您有所帮助!

  • 问题内容: 我想以小时/分钟/秒为单位计算两个日期之间的差异。 我的代码在这里有一个小问题: 这应该产生: 但是我得到这个结果: 有人可以在这里看到我在做什么错吗? 问题答案: 尝试 注意:这假定diff是非负数。

  • 我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入一个无效的日期时,打印语句会给我奇怪的输出。 当是时,它打印