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