Ejemplo n.º 1
0
 /// <summary>
 /// Parses a string containing a date and time into a DateTime configured for the local time zone.
 /// Throws a <see cref="FormatException"/> if the text can not be successfully parsed.
 /// </summary>
 /// <param name="text">Text to be parsed.</param>
 /// <param name="configuration">Configuration options to use.  If null <see cref="OcDateTimeConfiguration.GlobalDefaults"/> will be used. </param>
 /// <returns>A DateTime that contains both date and time information.</returns>
 public static DateTime ToDateTimeAsLocal(this string text, IOcDateTimeConfiguration configuration = null)
 {
     configuration = configuration ?? OcDateTimeConfiguration.GlobalDefaults;
     foreach (var culture in configuration.InputCultures)
     {
         if (DateTime.TryParseExact(text, configuration.InputDateTimeFormats, culture, DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.NoCurrentDateDefault, out var value))
         {
             return(value.ToLocalTime());
         }
     }
     throw new FormatException($"Input text of [{text}] was not recognized as a valid date and local time.");
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Parses a string containing a time into a DateTime configured for the UTC time zone.
 /// Throws a <see cref="FormatException"/> if the text can not be successfully parsed.
 /// </summary>
 /// <param name="text">Text to be parsed.</param>
 /// <param name="configuration">Configuration options to use.  If null <see cref="OcDateTimeConfiguration.GlobalDefaults"/> will be used. </param>
 /// <returns>A DateTime that only contains time information.</returns>
 public static DateTime ToTimeAsUtc(this string text, IOcDateTimeConfiguration configuration = null)
 {
     configuration = configuration ?? OcDateTimeConfiguration.GlobalDefaults;
     foreach (var culture in configuration.InputCultures)
     {
         if (DateTime.TryParseExact(text, configuration.InputTimeFormats, culture, DateTimeStyles.AllowWhiteSpaces & DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, out var value))
         {
             return(default(DateTime).Add(value.TimeOfDay));
         }
     }
     throw new FormatException($"Input text of [{text}] was not recognized as a valid universal (UTC) time.");
 }
        /// <summary>
        /// Should be called ONCE during program startup and initialization to specify
        /// the date & time configuration options that should be used by default for the application.
        /// </summary>
        /// <param name="configuration"></param>
        public static void SetGlobalDefaults(IOcDateTimeConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (configuration != GlobalDefaults)
            {
                Debug.WriteLine($"GLOBAL-CONFIG: Changing {nameof(OcDateTimeConfiguration)}.{nameof(GlobalDefaults)} to {configuration}");
                GlobalDefaults = configuration;
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Parses a string containing a time into a DateTime configured for the local time zone.
 /// Throws a <see cref="FormatException"/> if the text can not be successfully parsed.
 /// </summary>
 /// <param name="text">Text to be parsed.</param>
 /// <param name="result">If successful contains the parsed date and time.</param>
 /// <param name="configuration">Configuration options to use.  If null <see cref="OcDateTimeConfiguration.GlobalDefaults"/> will be used. </param>
 /// <returns>A DateTime that only contains time information.</returns>
 public static bool TryToTimeAsLocal(this string text, out DateTime result, IOcDateTimeConfiguration configuration = null)
 {
     configuration = configuration ?? OcDateTimeConfiguration.GlobalDefaults;
     foreach (var culture in configuration.InputCultures)
     {
         if (DateTime.TryParseExact(text, configuration.InputTimeFormats, culture, DateTimeStyles.AllowWhiteSpaces & DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AssumeLocal, out var value))
         {
             result = default(DateTime).Add(value.ToLocalTime().TimeOfDay);
             return(true);
         }
     }
     result = default;
     return(false);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Parses a string containing a date and time into a DateTime configured for the UTC time zone.
 /// Throws a <see cref="FormatException"/> if the text can not be successfully parsed.
 /// </summary>
 /// <param name="text">Text to be parsed.</param>
 /// <param name="result">If successful contains the parsed date and time.</param>
 /// <param name="configuration">Configuration options to use.  If null <see cref="OcDateTimeConfiguration.GlobalDefaults"/> will be used. </param>
 /// <returns>A DateTime that contains both date and time information.</returns>
 public static bool TryToDateTimeAsUtc(this string text, out DateTime result, IOcDateTimeConfiguration configuration = null)
 {
     configuration = configuration ?? OcDateTimeConfiguration.GlobalDefaults;
     foreach (var culture in configuration.InputCultures)
     {
         if (DateTime.TryParseExact(text, configuration.InputDateTimeFormats, culture, DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, out var value))
         {
             result = value;
             return(true);
         }
     }
     result = default;
     return(false);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Converts a DateTime into a text date and time format intended for writing to storage or sending to other systems.
 /// </summary>
 /// <param name="value">DateTime value to be converted into text.</param>
 /// <param name="configuration">Configuration options to use.  If null <see cref="OcDateTimeConfiguration.GlobalDefaults"/> will be used. </param>
 /// <returns>A string containing the formatted date and time.</returns>
 public static string ToStorageDateTime(this DateTime value, IOcDateTimeConfiguration configuration = null)
 {
     configuration = configuration ?? OcDateTimeConfiguration.GlobalDefaults;
     return(value.ToUniversalTime().ToString(configuration.StorageDateTimeFormat, configuration.StorageCulture));
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Converts a DateTime into text for displaying a date and time to the user.
 /// </summary>
 /// <param name="value">DateTime value to be converted into text.</param>
 /// <param name="configuration">Configuration options to use.  If null <see cref="OcDateTimeConfiguration.GlobalDefaults"/> will be used. </param>
 /// <returns>A string containing the formatted date and time.</returns>
 public static string ToDisplayDateTime(this DateTime value, IOcDateTimeConfiguration configuration = null)
 {
     configuration = configuration ?? OcDateTimeConfiguration.GlobalDefaults;
     return(value.ToLocalTime().ToString(configuration.DisplayDateTimeFormat, configuration.DisplayCulture));
 }