1f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ================================================================================================= 2f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ADOBE SYSTEMS INCORPORATED 3f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// Copyright 2006 Adobe Systems Incorporated 4f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// All Rights Reserved 5f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// 6f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms 7f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// of the Adobe license agreement accompanying it. 8f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ================================================================================================= 9f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 10f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingpackage com.adobe.xmp; 11f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 12f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport java.util.Calendar; 13f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport java.util.TimeZone; 14f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 15f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 16f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling/** 17f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * The <code>XMPDateTime</code>-class represents a point in time up to a resolution of nano 18f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * seconds. Dates and time in the serialized XMP are ISO 8601 strings. There are utility functions 19f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * to convert to the ISO format, a <code>Calendar</code> or get the Timezone. The fields of 20f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <code>XMPDateTime</code> are: 21f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <ul> 22f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <li> month - The month in the range 1..12. 23f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <li> day - The day of the month in the range 1..31. 24f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <li> minute - The minute in the range 0..59. 25f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <li> hour - The time zone hour in the range 0..23. 26f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <li> minute - The time zone minute in the range 0..59. 27f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <li> nanoSecond - The nano seconds within a second. <em>Note:</em> if the XMPDateTime is 28f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * converted into a calendar, the resolution is reduced to milli seconds. 29f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <li> timeZone - a <code>TimeZone</code>-object. 30f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * </ul> 31f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * DateTime values are occasionally used in cases with only a date or only a time component. A date 32f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * without a time has zeros for all the time fields. A time without a date has zeros for all date 33f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * fields (year, month, and day). 34f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 35f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingpublic interface XMPDateTime extends Comparable 36f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling{ 37f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @return Returns the year, can be negative. */ 38f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling int getYear(); 39f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 40f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @param year Sets the year */ 41f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling void setYear(int year); 42f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 43f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @return Returns The month in the range 1..12. */ 44f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling int getMonth(); 45f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 46f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @param month Sets the month 1..12 */ 47f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling void setMonth(int month); 48f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 49f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @return Returns the day of the month in the range 1..31. */ 50f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling int getDay(); 51f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 52f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @param day Sets the day 1..31 */ 53f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling void setDay(int day); 54f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 55f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @return Returns hour - The hour in the range 0..23. */ 56f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling int getHour(); 57f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 58f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @param hour Sets the hour in the range 0..23. */ 59f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling void setHour(int hour); 60f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 61f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @return Returns the minute in the range 0..59. */ 62f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling int getMinute(); 63f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 64f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @param minute Sets the minute in the range 0..59. */ 65f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling void setMinute(int minute); 66f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 67f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @return Returns the second in the range 0..59. */ 68f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling int getSecond(); 69f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 70f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @param second Sets the second in the range 0..59. */ 71f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling void setSecond(int second); 72f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 73f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 74f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns milli-, micro- and nano seconds. 75f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Nanoseconds within a second, often left as zero? 76f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 77f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling int getNanoSecond(); 78f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 79f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 80f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param nanoSecond Sets the milli-, micro- and nano seconds. 81f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Granularity goes down to milli seconds. 82f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 83f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling void setNanoSecond(int nanoSecond); 84f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 85f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @return Returns the time zone. */ 86f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling TimeZone getTimeZone(); 87f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 88f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** @param tz a time zone to set */ 89f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling void setTimeZone(TimeZone tz); 90f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 91f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 92f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns a <code>Calendar</code> (only with milli second precision). <br> 93f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * <em>Note:</em> the dates before Oct 15th 1585 (which normally fall into validity of 94f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * the Julian calendar) are also rendered internally as Gregorian dates. 95f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 96f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling Calendar getCalendar(); 97f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 98f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 99f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @return Returns the ISO 8601 string representation of the date and time. 100f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 101f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling String getISO8601String(); 102f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling}