/// <summary>Creates an <code>XMPDateTime</code>-instance from a calendar.</summary>
        /// <param name="calendar">a <code>Calendar</code></param>
        public XMPDateTimeImpl(Sharpen.Calendar calendar)
        {
            // EMPTY
            // extract the date and timezone from the calendar provided
            DateTime     date = calendar.GetTime();
            TimeZoneInfo zone = calendar.GetTimeZone();

            // put that date into a calendar the pretty much represents ISO8601
            // I use US because it is close to the "locale" for the ISO8601 spec
            Sharpen.GregorianCalendar intCalendar = (Sharpen.GregorianCalendar)Sharpen.Calendar.GetInstance(CultureInfo.InvariantCulture);
            intCalendar.SetGregorianChange(Sharpen.Extensions.CreateDate(long.MinValue));
            intCalendar.SetTimeZone(zone);
            intCalendar.SetTime(date);
            this.year  = intCalendar.Get(Sharpen.CalendarEnum.Year);
            this.month = intCalendar.Get(Sharpen.CalendarEnum.Month) + 1;
            // cal is from 0..12
            this.day         = intCalendar.Get(Sharpen.CalendarEnum.DayOfMonth);
            this.hour        = intCalendar.Get(Sharpen.CalendarEnum.HourOfDay);
            this.minute      = intCalendar.Get(Sharpen.CalendarEnum.Minute);
            this.second      = intCalendar.Get(Sharpen.CalendarEnum.Second);
            this.nanoSeconds = intCalendar.Get(Sharpen.CalendarEnum.Millisecond) * 1000000;
            this.timeZone    = intCalendar.GetTimeZone();
            // object contains all date components
            hasDate = hasTime = hasTimeZone = true;
        }
 /// <summary>Make sure a time is UTC.</summary>
 /// <remarks>
 /// 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.
 /// </remarks>
 /// <param name="dateTime">
 /// the <code>XMPDateTime</code> variable containing the time to
 /// be modified.
 /// </param>
 /// <returns>Returns an updated <code>XMPDateTime</code>-object.</returns>
 public static XMPDateTime ConvertToUTCTime(XMPDateTime dateTime)
 {
     long timeInMillis = dateTime.GetCalendar().GetTimeInMillis();
     Sharpen.GregorianCalendar cal = new Sharpen.GregorianCalendar(Utc);
     cal.SetGregorianChange(Sharpen.Extensions.CreateDate(long.MinValue));
     cal.SetTimeInMillis(timeInMillis);
     return new XMPDateTimeImpl(cal);
 }
Пример #3
0
        /// <summary>Make sure a time is UTC.</summary>
        /// <remarks>
        /// 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.
        /// </remarks>
        /// <param name="dateTime">
        /// the <code>XMPDateTime</code> variable containing the time to
        /// be modified.
        /// </param>
        /// <returns>Returns an updated <code>XMPDateTime</code>-object.</returns>
        public static XMPDateTime ConvertToUTCTime(XMPDateTime dateTime)
        {
            long timeInMillis = dateTime.GetCalendar().GetTimeInMillis();

            Sharpen.GregorianCalendar cal = new Sharpen.GregorianCalendar(Utc);
            cal.SetGregorianChange(Sharpen.Extensions.CreateDate(long.MinValue));
            cal.SetTimeInMillis(timeInMillis);
            return(new XMPDateTimeImpl(cal));
        }
 /// <seealso cref="Com.Adobe.Xmp.XMPDateTime.GetCalendar()"/>
 public virtual Sharpen.Calendar GetCalendar()
 {
     Sharpen.GregorianCalendar calendar = (Sharpen.GregorianCalendar)Sharpen.Calendar.GetInstance(CultureInfo.InvariantCulture);
     calendar.SetGregorianChange(Sharpen.Extensions.CreateDate(long.MinValue));
     if (hasTimeZone)
     {
         calendar.SetTimeZone(timeZone);
     }
     calendar.Set(Sharpen.CalendarEnum.Year, year);
     calendar.Set(Sharpen.CalendarEnum.Month, month - 1);
     calendar.Set(Sharpen.CalendarEnum.DayOfMonth, day);
     calendar.Set(Sharpen.CalendarEnum.HourOfDay, hour);
     calendar.Set(Sharpen.CalendarEnum.Minute, minute);
     calendar.Set(Sharpen.CalendarEnum.Second, second);
     calendar.Set(Sharpen.CalendarEnum.Millisecond, nanoSeconds / 1000000);
     return(calendar);
 }
Пример #5
0
 /// <summary>Make sure a time is UTC.</summary>
 /// <remarks>
 /// 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.
 /// </remarks>
 /// <param name="dateTime">
 /// the <c>XMPDateTime</c> variable containing the time to
 /// be modified.
 /// </param>
 /// <returns>Returns an updated <c>XMPDateTime</c>-object.</returns>
 public static IXmpDateTime ConvertToUtcTime(IXmpDateTime dateTime)
 {
     var timeInMillis = dateTime.Calendar.GetTimeInMillis();
     var cal = new GregorianCalendar(TimeZoneInfo.Utc);
     cal.SetGregorianChange(XmpDateTime.UnixTimeToDateTime(long.MinValue));
     cal.SetTimeInMillis(timeInMillis);
     return new XmpDateTime(cal);
 }