All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.lgooddatepicker.zinternaltools.Convert Maven / Gradle / Ivy

package com.github.lgooddatepicker.zinternaltools;

import com.github.lgooddatepicker.components.DatePicker;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;

/**
 * Convert, This class allows the programmer to get or set a date picker date, using some other
 * popular data types besides the default java.time.LocalDate.
 *
 * Example Usage:
 * 
 * // Create a date picker.
 * DatePicker datePicker = new DatePicker();
 *
 * // Set the date picker date, from a java.util.Date instance, using the default time zone.
 * java.util.Date date = new java.util.Date();
 * datePicker.convert().setDateWithDefaultZone(date);
 *
 * // Get the date picker date, as a java.util.Date instance, using the default time zone.
 * date = datePicker.convert().getDateWithDefaultZone();
 * 
* * Implementation note: For code clarity, only the java.time packages should use import statements * in this class. All other date related data types should be fully qualified in this class. */ public class Convert { /** * parentDatePicker, This holds the date picker that acts as the data source of all "get" * functions, or the data destination of all "put" functions. */ private DatePicker parentDatePicker; /** * Default Constructor, Supply the date picker that should be associated with this converter. */ public Convert(DatePicker parentDatePicker) { this.parentDatePicker = parentDatePicker; } /** * getDateWithDefaultZone, Returns the date picker value as a java.util.Date that was created * using the system default time zone, or returns null. This will return null when the date * picker has no value. */ public java.util.Date getDateWithDefaultZone() { LocalDate pickerDate = parentDatePicker.getDate(); if (pickerDate == null) { return null; } Instant instant = pickerDate.atStartOfDay(ZoneId.systemDefault()).toInstant(); // for backport: java.util.Date javaUtilDate = DateTimeUtils.toDate(instant); // for java.time: java.util.Date javaUtilDate = java.util.Date.from(instant); // This function was created to be compatible with both libraries. java.util.Date javaUtilDate = getJavaUtilDateFromInstant(instant); return javaUtilDate; } /** * getDateWithZone, Returns the date picker value as a java.util.Date that was created using the * specified time zone, or returns null. This will return null if either the date picker has no * value, or if the supplied time zone was null. */ public java.util.Date getDateWithZone(ZoneId timezone) { LocalDate pickerDate = parentDatePicker.getDate(); if (pickerDate == null || timezone == null) { return null; } Instant instant = pickerDate.atStartOfDay(timezone).toInstant(); // for backport: java.util.Date javaUtilDate = DateTimeUtils.toDate(instant); // for java.time: java.util.Date javaUtilDate = java.util.Date.from(instant); // This function was created to be compatible with both libraries. java.util.Date javaUtilDate = getJavaUtilDateFromInstant(instant); return javaUtilDate; } /** * setDateWithDefaultZone, Sets the date picker value from a java.util.Date using the system * default time zone. If either the date or the time zone are null, the date picker will be * cleared. */ public void setDateWithDefaultZone(java.util.Date javaUtilDate) { if (javaUtilDate == null) { parentDatePicker.setDate(null); return; } Instant instant = Instant.ofEpochMilli(javaUtilDate.getTime()); ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault()); LocalDate localDate = zonedDateTime.toLocalDate(); parentDatePicker.setDate(localDate); } /** * setDateWithZone, Sets the date picker value from a java.util.Date using the specified time * zone. If either the date or the time zone are null, the date picker will be cleared. */ public void setDateWithZone(java.util.Date javaUtilDate, ZoneId timezone) { if (javaUtilDate == null || timezone == null) { parentDatePicker.setDate(null); return; } Instant instant = Instant.ofEpochMilli(javaUtilDate.getTime()); ZonedDateTime zonedDateTime = instant.atZone(timezone); LocalDate localDate = zonedDateTime.toLocalDate(); parentDatePicker.setDate(localDate); } /** * getJavaUtilDateFromInstant, Converts a "Java.time" or "backport310" instant to a * java.util.Date. This code was copied from backport310, and should work in both java.time and * backport310. * * Note: Be aware that if applying a specific time zone, then the time zone should be used to * create the instant. */ private java.util.Date getJavaUtilDateFromInstant(Instant instant) { java.util.Date javaUtilDate; try { javaUtilDate = new java.util.Date(instant.toEpochMilli()); } catch (ArithmeticException ex) { throw new IllegalArgumentException(ex); } return javaUtilDate; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy