/// <summary> /// Initialize the structure with the current date, time and timezone /// </summary> public static ExsltDateTime ParseDate(string d) { // Try each potential class, from most specific to least specific. // First DateTimeTZ try { DateTimeTZ t = new DateTimeTZ(d); return t; } catch (FormatException) { } // Next Date try { DateTZ t = new DateTZ(d); return t; } catch (FormatException) { } // Next YearMonth try { YearMonth t = new YearMonth(d); return t; } catch (FormatException) { } // Finally Year -- don't catch the exception for the last type { YearTZ t = new YearTZ(d); return t; } }
/// <summary> /// Internal function to format the date based on a date, rather than a string /// </summary> /// <returns>The formtted date and time as a ISO8601 string</returns> internal string dateTimeImpl(DateTimeTZ dtz) { return dtz.ToString(); }
/// <summary> /// Implements the following function /// string date:date-time() /// </summary> /// <returns>The current date and time or the empty string if the /// date is invalid </returns> public string dateTime(string s) { try { DateTimeTZ d = new DateTimeTZ(s); return dateTimeImpl(d); } catch (FormatException) { return ""; } }
/// <summary> /// Implements the following function /// string date:date-time() /// Output format is ISO 8601 (YYYY-MM-DDThh:mm:ss{Z | {+ | -}zz:zz}). /// YYYY - year with century /// MM - month in numbers with leading zero /// DD - day in numbers with leading zero /// T - the letter T /// hh - hours in numbers with leading zero (00-23). /// mm - minutes in numbers with leading zero (00-59). /// ss - seconds in numbers with leading zero (00-59). /// +/-zzzz - time zone expressed as hours and minutes from UTC. /// If UTC, then this is the letter Z /// If east of Greenwich, then -zz:zz (e.g. Pacific standard time is -08:00) /// If west of Greenwich, then +zz:zz (e.g. Tokyo is +09:00) /// </summary> /// <returns>The current time.</returns> public string dateTime() { DateTimeTZ d = new DateTimeTZ(); return dateTimeImpl(d); }