java返回星期几而不是月份

java返回星期几而不是月份,java,date,gregorian-calendar,Java,Date,Gregorian Calendar,注:是的,我意识到使用简单的日期格式可能比我目前的系统更好,但我发现这比使用简单的日期格式更容易 此代码只需返回保存为dd/mm/yyyy的日期,对于贷款日期为2013年1月1日,它会返回该日期,但是对于dueBack日期,它返回的是2013年4月22日,它应该返回的是2013年1月22日 public String returnLoan() { String dLoan = loan.get(loan.DAY_OF_MONTH) + "/"

注:是的,我意识到使用简单的日期格式可能比我目前的系统更好,但我发现这比使用简单的日期格式更容易

此代码只需返回保存为dd/mm/yyyy的日期,对于贷款日期为2013年1月1日,它会返回该日期,但是对于dueBack日期,它返回的是2013年4月22日,它应该返回的是2013年1月22日

public String returnLoan()
{
    String dLoan = loan.get(loan.DAY_OF_MONTH) + "/" 
                     + loan.get(loan.MONTH + 1) + "/" 
                     + loan.get(loan.YEAR);
    return dLoan;
}

public String returnDueBack()
{
    String dDueBack = dueBack.get(dueBack.DAY_OF_MONTH) + "/" 
                        + dueBack.get(dueBack.MONTH + 1) + "/" 
                        + dueBack.get(dueBack.YEAR);
    return dDueBack;
}
作为参考,这是构造函数

public Loan()
{
    memID = 0;
    bookID = 0;
    loan = new GregorianCalendar(2013, 0, 1);
    dueBack = new GregorianCalendar(2013, 0, 22);
    returned = false;
}
非常感谢您的帮助。

代替

dueBack.get(dueBack.MONTH + 1)
使用

而不是

dueBack.get(dueBack.MONTH + 1)
使用

tl;博士 2013-05-22

java.time 更易于使用现代java.time类

定义与输入匹配的格式模式

String input = "22/4/2013" ; 
DateTimeFormatter f = DateTimeFormatter.ofPattern( "d/M/uuuu" ) ;
解析为
LocalDate
,一个只包含日期的值,不包含一天中的时间和时区

LocalDate ld = LocalDate.parse( input , f ) ;
加上一个月

LocalDate ldNextMonth = ld.plusMonths( 1 ) ;

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*

从哪里获得java.time类

  • 然后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类
    • 对于早期的Android(tl;dr 2013-05-22

      java.time 更易于使用现代java.time类

      定义与输入匹配的格式模式

      String input = "22/4/2013" ; 
      DateTimeFormatter f = DateTimeFormatter.ofPattern( "d/M/uuuu" ) ;
      
      解析为
      LocalDate
      ,一个只包含日期的值,不包含一天中的时间和时区

      LocalDate ld = LocalDate.parse( input , f ) ;
      
      加上一个月

      LocalDate ldNextMonth = ld.plusMonths( 1 ) ;
      

      关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,&

      该项目现已启动,建议迁移到类

      要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为

      您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
      java.sql.*
      classes

      从哪里获得java.time类

      • 然后
        • 内置的
        • 标准JavaAPI的一部分,带有捆绑实现
        • Java9添加了一些次要功能和修复
        • 大部分java.time功能都在中向后移植到Java6和Java7
        • 更高版本的Android捆绑包实现了java.time类

        • 对于早期的Android(他们需要一个新的日历系统,该系统使用枚举代替常量来处理这些事情these@Cruncher在Java 8中使用新的软件包会变得更好。@Jesper看起来不错。奇怪的是,花了这么长时间才得到一个像样的时间包。当然Jon Skeet会对我大喊大叫,告诉我这是真的没有那么容易。@Cruncher新的
          java.time
          包基于流行的库。如果你不能使用java 8,那么如果你需要处理日期和时间,我强烈建议使用Joda time。它的API比
          java.util.Date
          java.util.Calendar
          提供的要好得多。他们需要一个新的日历系统它使用枚举来处理这些事情,而不是常量。不太容易出现诸如these@Cruncher有了新的软件包,Java 8会变得更好。@Jesper它看起来不错。奇怪的是,花了这么长时间才有了一个像样的时间包。当然Jon Skeet会对我大喊大叫,告诉我这真的没那么容易。@Cruncher the新的
          java.time
          包基于流行的库。如果您不能使用java 8,那么如果您需要处理日期和时间,我强烈建议使用Joda time。它的API比
          java.util.Date
          java.util.Calendar
          提供的要好得多。“注意:是的,我意识到使用简单的日期格式可能比我目前的系统更好,但我发现这比使用简单的日期格式更容易。“这似乎是一个学习的好时机,而不是绕过这个问题。特别是,你的代码没有进行0填充-而如果你只是创建一个模式为
          dd/MM/yyyy
          SimpleDataFormat
          ,它将非常简单。而且你不会有当前的问题。你怎么能说“当前系统”当当前系统还不能工作时,使用
          SimpleDateFormat
          比使用
          SimpleDateFormat容易吗?“注意:是的,我意识到使用简单日期格式可能比我当前的系统要好,但我发现这比使用简单日期格式容易。”这似乎是一个学习的好时机,而不是绕过这个问题。特别是,你的代码没有进行0填充-而如果你只是创建一个模式为
          dd/MM/yyyy
          SimpleDataFormat
          ,它将非常简单地工作。而且你不会有当前的问题。你怎么能说“当前系统”当当前系统尚未工作时,是否比使用
          SimpleDataFormat
          更容易?