title: LocalDate: missing methods isEqualOrBefore and isEqualOrAfter
body: <p><em>Question</em>: How are you handling these use cases?</p>
  
  <ul>
  <li>do you use static helper methods?</li>
  <li>do you use the verbose equals followed by isAfter/isBefore?</li>
  <li>do you use the negated opposite condition?</li>
  <li>do you use 3rd party library helpers?</li>
  </ul>
  
  <p>In daily business, I often need to check if date a &lt;= date b or if date a >= date b.</p>
  
  <p>The internet often suggests to use the negated versions of isBefore/isAfter methods.</p>
  
  <p>In practice I find that I</p>
  
  <ul>
  <li>almost never get these negated comparisons right on the first try (and they should be intuitive and easy).</li>
  <li>have a hard time understanding the business logic when reading the code</li>
  </ul>
  
  <p>I guess part of me is still hoping that I just overlooked the corresponding methods in the API (please!).</p>
  
  <pre><code>  /**
     * @return true if candidate &gt;= reference &lt;/br&gt;
     *         or in other words: &lt;code&gt;candidate.equals(reference) || candidate.isAfter(reference)&lt;/code&gt; &lt;/br&gt;
     *         or in other words: &lt;code&gt;!candidate.isBefore(reference) &lt;/br&gt;
     *         or in other words: &lt;code&gt;candidate.compareTo(reference) &gt;= 0
     */
    public static boolean isEqualOrAfter(LocalDate candidate, LocalDate reference)
    {
      return !candidate.isBefore(reference);
    }
  
    /**
     * @return true if candidate &lt;= reference &lt;/br&gt;
     *         or in other words: &lt;code&gt;candidate.equals(reference) || candidate.isBefore(reference)&lt;/code&gt; &lt;/br&gt;
     *         or in other words: &lt;code&gt;!candidate.isAfter(reference) &lt;/br&gt;
     *         or in other words: &lt;code&gt;candidate.compareTo(reference) &lt;= 0
     */
    public static boolean isEqualOrBefore(LocalDate candidate, LocalDate reference)
    {   
      return !candidate.isAfter(reference);
    }
  </code></pre>
  
  <p>EDIT: As suggested by Andreas, I added the version with <code>compareTo</code> method, I hope I got them right (without testing).</p>
  
  <p>EDIT 2: Example:</p>
  
  <pre><code>// Manager says: "Show me everything from 3 days ago or later" or "show me everything that's at most 3 days old"
  for(Item item : items) {
    // negation idiom
    if(!item.getDate().isBefore(LocalDate.now().minusDays(3))) {
      // show
    }
  
    // compareTo idiom
    if(item.getDate().compareTo(LocalDate.now().minusDays(3)) &gt;= 0) {
      // show
    }
  
    // desired
    if(item.getDate().isEqualOrAfter(LocalDate.now().minusDays(3))) {
      // show
    }
  }
  </code></pre>