DateResolver.java
package pro.verron.officestamper.preset.resolvers.date;
import pro.verron.officestamper.api.ObjectResolver;
import pro.verron.officestamper.api.StringResolver;
import java.text.SimpleDateFormat;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/// This [ObjectResolver] creates a formatted date [String] for
/// expressions that return a [Date] object.
///
/// @author Joseph Verron
/// @version ${version}
/// @since 1.6.7
public final class DateResolver
extends StringResolver<Date> {
private final DateTimeFormatter formatter;
/// Creates a new DateResolver that uses the format "dd.MM.yyyy".
public DateResolver() {
this(DateTimeFormatter.ofPattern("dd.MM.yyyy"));
}
/// Creates a new DateResolver.
///
/// @param formatter the format to use for date formatting. See
/// [SimpleDateFormat].
public DateResolver(DateTimeFormatter formatter) {
super(Date.class);
this.formatter = formatter;
}
/// Resolves a formatted date string for the given [Date] object.
///
/// @param date the [Date] object to be resolved.
///
/// @return the formatted date string.
@Override
protected String resolve(Date date) {
var zone = ZoneId.systemDefault();
var localDate = date.toInstant()
.atZone(zone)
.toLocalDate();
return formatter.format(localDate);
}
}