LocalDateRandomField.java
package de.slothsoft.random.types;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.TimeZone;
import de.slothsoft.random.RandomField;
/**
* A {@link RandomField} representing a {@link LocalDate} between 10 years ago and 10
* years in the future.
*
* @author Stef Schulz
* @since 2.1.0
*/
public class LocalDateRandomField extends AbstractChronoRandomField<LocalDate> {
@Override
LocalDate createDefaultStartValue() {
return LocalDate.now().minusYears(10);
}
@Override
LocalDate createDefaultEndValue() {
return LocalDate.now().plusYears(10);
}
@Override
long toLongValue(LocalDate value) {
return value.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
}
@Override
LocalDate fromLongValue(long date) {
return Instant.ofEpochMilli(date).atZone(TimeZone.getDefault().toZoneId()).toLocalDate();
}
@Override
public LocalDateRandomField endValue(LocalDate newEndValue) {
return (LocalDateRandomField) super.endValue(newEndValue);
}
@Override
public LocalDateRandomField startValue(LocalDate newStartValue) {
return (LocalDateRandomField) super.startValue(newStartValue);
}
}