class InstantColumnFormatter extends TemporalColumnFormatter {

  private final ZoneId zoneId;

  public InstantColumnFormatter() {
    super(null);
    this.zoneId = ZoneOffset.UTC;
  }

  public InstantColumnFormatter(ZoneId zoneId) {
    super(null);
    this.zoneId = zoneId;
  }

  public InstantColumnFormatter(DateTimeFormatter format) {
    super(format);
    this.zoneId = ZoneOffset.UTC;
  }

  public InstantColumnFormatter(DateTimeFormatter format, ZoneId zoneId) {
    super(format);
    this.zoneId = zoneId;
  }

  public InstantColumnFormatter(DateTimeFormatter format, String missingValueString) {
    super(format, missingValueString);
    this.zoneId = ZoneOffset.UTC;
  }

  public InstantColumnFormatter(
      DateTimeFormatter format, ZoneId zoneId, String missingValueString) {
    super(format, missingValueString);
    this.zoneId = zoneId;
  }

  public String format(long value) {<FILL_FUNCTION_BODY>}

  @Override
  public String toString() {
    return "InstantColumnFormatter{"
        + "format="
        + getFormat()
        + ", missingValueString='"
        + getMissingString()
        + '\''
        + '}';
  }
}

    if (value == InstantColumnType.missingValueIndicator()) {
      return getMissingString();
    }
    if (getFormat() == null) {
      return PackedInstant.toString(value);
    }
    Instant instant = PackedInstant.asInstant(value);
    if (instant == null) {
      return "";
    }
    ZonedDateTime time = instant.atZone(zoneId);
    return getFormat().format(time);
  
<methods>public java.time.format.DateTimeFormatter getFormat() <variables>private final non-sealed java.time.format.DateTimeFormatter format