com.adobe.xmp.XMPDateTimeFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xmpcore Show documentation
Show all versions of xmpcore Show documentation
The XMP Library for Java is based on the C++ XMPCore library
and the API is similar.
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2006 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// =================================================================================================
package com.adobe.xmp;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import com.adobe.xmp.impl.XMPDateTimeImpl;
/**
* A factory to create XMPDateTime
-instances from a Calendar
or an
* ISO 8601 string or for the current time.
*
* @since 16.02.2006
*/
public final class XMPDateTimeFactory
{
/** The UTC TimeZone */
private static final TimeZone UTC = TimeZone.getTimeZone("UTC");
/** Private constructor */
private XMPDateTimeFactory()
{
// EMPTY
}
/**
* Creates an XMPDateTime
from a Calendar
-object.
*
* @param calendar a Calendar
-object.
* @return An XMPDateTime
-object.
*/
public static XMPDateTime createFromCalendar(Calendar calendar)
{
return new XMPDateTimeImpl(calendar);
}
/**
* Creates an empty XMPDateTime
-object.
* @return Returns an XMPDateTime
-object.
*/
public static XMPDateTime create()
{
return new XMPDateTimeImpl();
}
/**
* Creates an XMPDateTime
-object from initial values.
* @param year years
* @param month months from 1 to 12
* Note: Remember that the month in {@link Calendar} is defined from 0 to 11.
* @param day days
* @return Returns an XMPDateTime
-object.
*/
public static XMPDateTime create(int year, int month, int day)
{
XMPDateTime dt = new XMPDateTimeImpl();
dt.setYear(year);
dt.setMonth(month);
dt.setDay(day);
return dt;
}
/**
* Creates an XMPDateTime
-object from initial values.
* @param year years
* @param month months from 1 to 12
* Note: Remember that the month in {@link Calendar} is defined from 0 to 11.
* @param day days
* @param hour hours
* @param minute minutes
* @param second seconds
* @param nanoSecond nanoseconds
* @return Returns an XMPDateTime
-object.
*/
public static XMPDateTime create(int year, int month, int day,
int hour, int minute, int second, int nanoSecond)
{
XMPDateTime dt = new XMPDateTimeImpl();
dt.setYear(year);
dt.setMonth(month);
dt.setDay(day);
dt.setHour(hour);
dt.setMinute(minute);
dt.setSecond(second);
dt.setNanoSecond(nanoSecond);
return dt;
}
/**
* Creates an XMPDateTime
from an ISO 8601 string.
*
* @param strValue The ISO 8601 string representation of the date/time.
* @return An XMPDateTime
-object.
* @throws XMPException When the ISO 8601 string is non-conform
*/
public static XMPDateTime createFromISO8601(String strValue) throws XMPException
{
return new XMPDateTimeImpl(strValue);
}
/**
* Obtain the current date and time.
*
* @return Returns The returned time is UTC, properly adjusted for the local time zone. The
* resolution of the time is not guaranteed to be finer than seconds.
*/
public static XMPDateTime getCurrentDateTime()
{
return new XMPDateTimeImpl(new GregorianCalendar());
}
/**
* Sets the local time zone without touching any other Any existing time zone value is replaced,
* the other date/time fields are not adjusted in any way.
*
* @param dateTime the XMPDateTime
variable containing the value to be modified.
* @return Returns an updated XMPDateTime
-object.
*/
public static XMPDateTime setLocalTimeZone(XMPDateTime dateTime)
{
Calendar cal = dateTime.getCalendar();
cal.setTimeZone(TimeZone.getDefault());
return new XMPDateTimeImpl(cal);
}
/**
* Make sure a time is UTC. If the time zone is not UTC, the time is
* adjusted and the time zone set to be UTC.
*
* @param dateTime
* the XMPDateTime
variable containing the time to
* be modified.
* @return Returns an updated XMPDateTime
-object.
*/
public static XMPDateTime convertToUTCTime(XMPDateTime dateTime)
{
long timeInMillis = dateTime.getCalendar().getTimeInMillis();
GregorianCalendar cal = new GregorianCalendar(UTC);
cal.setGregorianChange(new Date(Long.MIN_VALUE));
cal.setTimeInMillis(timeInMillis);
return new XMPDateTimeImpl(cal);
}
/**
* Make sure a time is local. If the time zone is not the local zone, the time is adjusted and
* the time zone set to be local.
*
* @param dateTime the XMPDateTime
variable containing the time to be modified.
* @return Returns an updated XMPDateTime
-object.
*/
public static XMPDateTime convertToLocalTime(XMPDateTime dateTime)
{
long timeInMillis = dateTime.getCalendar().getTimeInMillis();
// has automatically local timezone
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(timeInMillis);
return new XMPDateTimeImpl(cal);
}
}