Java 比较日期(之前和之后),类型字符串的方法before(String)未定义

Java 比较日期(之前和之后),类型字符串的方法before(String)未定义,java,Java,我想用以下代码比较日期与之前和之后 我有两个变量varYEAR和varYEARDAY,我想将它们与“before”和“after”进行比较 如果使用Eclipse保存代码,我会收到以下消息: 类型字符串的(字符串)之前的方法未定义 对不起,我是java的新手:-) 你不必把日期转换成春天。日期有前后两种方法,可以相互比较。 你可以用 如果(日期2.之后(日期1))或根据您的要求使用日期2.之前(日期1) 你可以找到很多信息,因为这个问题以前被问过 您只需使用方法。compareTo(Strin

我想用以下代码比较日期与之前和之后

我有两个变量
varYEAR
varYEARDAY
,我想将它们与“before”和“after”进行比较

如果使用Eclipse保存代码,我会收到以下消息:

类型字符串的(字符串)之前的方法未定义

对不起,我是java的新手:-)


你不必把日期转换成春天。日期有前后两种方法,可以相互比较。 你可以用 如果(日期2.之后(日期1))或根据您的要求使用日期2.之前(日期1)

你可以找到很多信息,因为这个问题以前被问过

  • 您只需使用方法
    。compareTo(String)
此方法要求(正如您所做的那样)使用“yyyyMMdd”格式编写字符串,因为它比较字符串的字典值,而不是它们的实际含义

这样,
date1.compareTo(date2)
返回

  • 如果date1大于date2,则为正值(1)
  • 如果date1小于date2,则为负值(-1)
  • 如果它们相等,则为0
  • 然后编写一段代码,以获得布尔值形式的最终结果。 它实际上像.after()一样工作

    • 但是在java中有更有效的方法来比较日期:
      date
      type
    您有java类型
    Date
    。 我猜您的参数
    varYEAR
    varYEARDAY
    已经是
    Date
    类型了。 方法.after()和.before()已经实现,并提供您要查找的结果

    varYEAR.after(varYEARDAY); // Boolean
    
    • 如果您的参数不是
      Date
      类型,我们将需要它们的类型为您提供好的答案。 您仍然可以用以毫秒为单位的字符串或长字符串来构造日期。
    • Date-date1=新的SimpleDateFormat(您的\格式).parse(您的\日期\在\字符串中)
    • Date date1=新日期(您的日期以毫秒为单位)
    • 如果要使用日历值(2016年5月1日)生成日期,应使用
      gregorianalendar
      类型。(具有相同的方法
      .after()
      .before()
    使用此构造函数:

    GregorianCalendar date1 = new GregorianCalendar(int year, int month, int day_of_month(1-31))
    

    享受编码乐趣。

    您的问题不清楚,无法记录输入的类型和示例值

    如果给定变量的名称,您最初将以下内容作为输入:

    • 年数
    • 年加上一年中的某一天(1-366)
    …那么你可能工作太辛苦了

    java.time java 8及更高版本中内置的java.time框架没有使用旧的日期时间类,而是使用它们的替换

    在这些优秀的课程中有一门是。本课程包括一个工厂方法,该方法采用年份和日期

    int year = 2010;
    LocalDate ld = LocalDate.ofYearDay( 2016 , 234 );
    if ( ld.getYear() < year ) {
        …
    }
    

    字符串不是日期,也不应该将其视为一个。如果要比较
    String
    而不是
    date
    对象,请尝试:
    if(varYEARDAY.before(varYEARDAY)){…}
    如果我不将其定义为字符串,则保存它时的消息是相同的,这就是我想知道的:@kthink请尽可能简单地保存问题的代码。删除所有不相关的行。@k思考您的两个输入变量到底是什么?您最初有年份号和年份+日期吗?
    int year = 2010;
    LocalDate ld = LocalDate.ofYearDay( 2016 , 234 );
    if ( ld.getYear() < year ) {
        …
    }
    
    LocalDate ld = LocalDate.parse( "2016-234" );