code: public String printRelative(
          UnixTime moment,
          Timezone tz,
          TimeUnit precision
      ) {
  
          UnixTime ref = this.getReferenceClock().currentTime();
          Moment t1 = Moment.from(ref);
          Moment t2 = Moment.from(moment);
  
          if (precision.compareTo(TimeUnit.SECONDS) <= 0) {
              long delta = t1.until(t2, TimeUnit.SECONDS);
  
              if (Math.abs(delta) < 60L) {
                  return this.printRelativeSeconds(t1, t2, delta);
              }
          }
  
          return this.printRelativeTime(t1, t2, tz, precision, null, null);
  
      }
docs: /*[deutsch]
  <p>Formatiert den angegebenen Zeitpunkt relativ zur aktuellen Zeit
  der Referenzuhr {@link #getReferenceClock()} als Dauer in der angegebenen
  maximalen Genauigkeit. </p>
  
  <p>Wenn Tagesgenauigkeit angegeben ist, sind auch Ausgaben wie &quot;heute&quot;, &quot;gestern&quot;,
  &quot;morgen&quot; oder &quot;letzten Mittwoch&quot; m&ouml;glich. Beispiel: </p>
  
  <pre>
  TimeSource&lt;?&gt; clock = () -> PlainTimestamp.of(2015, 8, 1, 10, 24, 5).atUTC();
  String durationInDays =
  PrettyTime.of(Locale.GERMAN).withReferenceClock(clock).printRelative(
  PlainTimestamp.of(2015, 8, 1, 17, 0).atUTC(),
  Timezone.of(EUROPE.BERLIN),
  TimeUnit.DAYS);
  System.out.println(durationInDays); // heute
  </pre>
  
  @param   moment      relative time point
  @param   tz          time zone for translating to a local duration
  @param   precision   maximum precision of relative time (not more than seconds)
  @return  formatted output of relative time, either in past or in future
  @since   3.6/4.4