com.adobe.internal.xmp.XMPDateTime 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.internal.xmp;
import java.util.Calendar;
import java.util.TimeZone;
/**
* The XMPDateTime
-class represents a point in time up to a resolution of nano
* seconds. Dates and time in the serialized XMP are ISO 8601 strings. There are utility functions
* to convert to the ISO format, a Calendar
or get the Timezone. The fields of
* XMPDateTime
are:
*
* - month - The month in the range 1..12.
*
- day - The day of the month in the range 1..31.
*
- minute - The minute in the range 0..59.
*
- hour - The time zone hour in the range 0..23.
*
- minute - The time zone minute in the range 0..59.
*
- nanoSecond - The nano seconds within a second. Note: if the XMPDateTime is
* converted into a calendar, the resolution is reduced to milli seconds.
*
- timeZone - a
TimeZone
-object.
*
* DateTime values are occasionally used in cases with only a date or only a time component. A date
* without a time has zeros for all the time fields. A time without a date has zeros for all date
* fields (year, month, and day).
*/
public interface XMPDateTime extends Comparable
{
/** @return Returns the year, can be negative. */
int getYear();
/** @param year Sets the year */
void setYear(int year);
/** @return Returns The month in the range 1..12. */
int getMonth();
/** @param month Sets the month 1..12 */
void setMonth(int month);
/** @return Returns the day of the month in the range 1..31. */
int getDay();
/** @param day Sets the day 1..31 */
void setDay(int day);
/** @return Returns hour - The hour in the range 0..23. */
int getHour();
/** @param hour Sets the hour in the range 0..23. */
void setHour(int hour);
/** @return Returns the minute in the range 0..59. */
int getMinute();
/** @param minute Sets the minute in the range 0..59. */
void setMinute(int minute);
/** @return Returns the second in the range 0..59. */
int getSecond();
/** @param second Sets the second in the range 0..59. */
void setSecond(int second);
/**
* @return Returns milli-, micro- and nano seconds.
* Nanoseconds within a second, often left as zero?
*/
int getNanoSecond();
/**
* @param nanoSecond Sets the milli-, micro- and nano seconds.
* Granularity goes down to milli seconds.
*/
void setNanoSecond(int nanoSecond);
/** @return Returns the time zone. */
TimeZone getTimeZone();
/** @param tz a time zone to set */
void setTimeZone(TimeZone tz);
/**
* This flag is set either by parsing or by setting year, month or day.
* @return Returns true if the XMPDateTime object has a date portion.
*/
boolean hasDate();
/**
* This flag is set either by parsing or by setting hours, minutes, seconds or milliseconds.
* @return Returns true if the XMPDateTime object has a time portion.
*/
boolean hasTime();
/**
* This flag is set either by parsing or by setting hours, minutes, seconds or milliseconds.
* @return Returns true if the XMPDateTime object has a defined timezone.
*/
boolean hasTimeZone();
/**
* @return Returns a Calendar
(only with milli second precision).
* Note: the dates before Oct 15th 1585 (which normally fall into validity of
* the Julian calendar) are also rendered internally as Gregorian dates.
*/
Calendar getCalendar();
/**
* @return Returns the ISO 8601 string representation of the date and time.
*/
String getISO8601String();
}