LocalDateTimeRandomField.java

package de.slothsoft.random.types;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.TimeZone;

import de.slothsoft.random.RandomField;

/**
 * A {@link RandomField} representing a {@link LocalDateTime} between 10 years ago and 10 years in the future.
 *
 * @author Stef Schulz
 * @since 2.1.0
 */

public class LocalDateTimeRandomField extends AbstractChronoRandomField<LocalDateTime> {

	@Override
	LocalDateTime createDefaultStartValue() {
		return LocalDateTime.now().minusYears(10);
	}

	@Override
	LocalDateTime createDefaultEndValue() {
		return LocalDateTime.now().plusYears(10);
	}

	@Override
	long toLongValue(LocalDateTime value) {
		return value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
	}

	@Override
	LocalDateTime fromLongValue(long date) {
		return LocalDateTime.ofInstant(Instant.ofEpochMilli(date), TimeZone.getDefault().toZoneId());
	}

	@Override
	public LocalDateTimeRandomField endValue(LocalDateTime newEndValue) {
		return (LocalDateTimeRandomField) super.endValue(newEndValue);
	}

	@Override
	public LocalDateTimeRandomField startValue(LocalDateTime newStartValue) {
		return (LocalDateTimeRandomField) super.startValue(newStartValue);
	}

}