diff --git a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp.Test/ParsingDateTimeInCSharp.Test.csproj b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp.Test/ParsingDateTimeInCSharp.Test.csproj index 71d96b4082..b15652156c 100644 --- a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp.Test/ParsingDateTimeInCSharp.Test.csproj +++ b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp.Test/ParsingDateTimeInCSharp.Test.csproj @@ -1,7 +1,7 @@ - net7.0 + net10.0 enable enable @@ -9,13 +9,13 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParseExactMethod.cs b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParseExactMethod.cs index 641380cb90..ed04bc391b 100644 --- a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParseExactMethod.cs +++ b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParseExactMethod.cs @@ -1,56 +1,55 @@ using System.Globalization; -namespace ParsingDateTimeInCSharp +namespace ParsingDateTimeInCSharp; + +public static class ParseExactMethod { - public static class ParseExactMethod - { - public static DateTime ParseExactWithStringAndStringAndFormatProviderInputParameters(string dateString, string format, string culture) - => DateTime.ParseExact(dateString, format, new CultureInfo(culture)); + public static DateTime ParseExactWithStringAndStringAndFormatProviderInputParameters(string dateString, string format, string culture) + => DateTime.ParseExact(dateString, format, new CultureInfo(culture)); - public static DateTime ParseExactWithStringAndStringAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string format, string culture, DateTimeStyles dateTimeStyles) - => DateTime.ParseExact(dateString, format, new CultureInfo(culture), dateTimeStyles); + public static DateTime ParseExactWithStringAndStringAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string format, string culture, DateTimeStyles dateTimeStyles) + => DateTime.ParseExact(dateString, format, new CultureInfo(culture), dateTimeStyles); - public static DateTime ParseExactWithSpanAndSpanAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string format, string culture, DateTimeStyles dateTimeStyles) - => DateTime.ParseExact(dateString.AsSpan(), format.AsSpan(), new CultureInfo(culture), dateTimeStyles); - - public static Dictionary ParseExactWithStringAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(Dictionary dateStrings, string[] formats, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles) - { - var result = new Dictionary(); + public static DateTime ParseExactWithSpanAndSpanAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string format, string culture, DateTimeStyles dateTimeStyles) + => DateTime.ParseExact(dateString.AsSpan(), format.AsSpan(), new CultureInfo(culture), dateTimeStyles); + + public static Dictionary ParseExactWithStringAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(Dictionary dateStrings, string[] formats, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles) + { + var result = new Dictionary(); - try - { - foreach (string format in formats) - { - var dateString = dateStrings[format]; - result.Add(dateString, DateTime.ParseExact(dateString, formats, cultureInfo, dateTimeStyles)); - } - } - catch (FormatException ex) + try + { + foreach (string format in formats) { - Console.WriteLine(ex.Message); + var dateString = dateStrings[format]; + result.Add(dateString, DateTime.ParseExact(dateString, formats, cultureInfo, dateTimeStyles)); } - - return result; } - - public static Dictionary ParseExactWithSpanAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(Dictionary dateStrings, string[] formats, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles) + catch (FormatException ex) { - var result = new Dictionary(); + Console.WriteLine(ex.Message); + } - try - { - foreach (string format in formats) - { - var dateString = dateStrings[format]; - result.Add(dateString, DateTime.ParseExact(dateString.AsSpan(), formats, cultureInfo, dateTimeStyles)); - } - } - catch (FormatException ex) + return result; + } + + public static Dictionary ParseExactWithSpanAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(Dictionary dateStrings, string[] formats, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles) + { + var result = new Dictionary(); + + try + { + foreach (string format in formats) { - Console.WriteLine(ex.Message); + var dateString = dateStrings[format]; + result.Add(dateString, DateTime.ParseExact(dateString.AsSpan(), formats, cultureInfo, dateTimeStyles)); } - - return result; } + catch (FormatException ex) + { + Console.WriteLine(ex.Message); + } + + return result; } } diff --git a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParseMethod.cs b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParseMethod.cs index c7ba1443df..ad14cee1df 100644 --- a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParseMethod.cs +++ b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParseMethod.cs @@ -1,23 +1,22 @@ using System.Globalization; -namespace ParsingDateTimeInCSharp +namespace ParsingDateTimeInCSharp; + +public static class ParseMethod { - public static class ParseMethod - { - public static DateTime ParseWithStringInputParameter(string dateString) - => DateTime.Parse(dateString); + public static DateTime ParseWithStringInputParameter(string dateString) + => DateTime.Parse(dateString); - public static DateTime ParseWithStringAndFormatProviderInputParameters(string dateString, string culture) - => DateTime.Parse(dateString, new CultureInfo(culture)); + public static DateTime ParseWithStringAndFormatProviderInputParameters(string dateString, string culture) + => DateTime.Parse(dateString, new CultureInfo(culture)); - public static DateTime ParseWithStringAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string culture, DateTimeStyles dateTimeStyles) - => DateTime.Parse(dateString, new CultureInfo(culture), dateTimeStyles); + public static DateTime ParseWithStringAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string culture, DateTimeStyles dateTimeStyles) + => DateTime.Parse(dateString, new CultureInfo(culture), dateTimeStyles); - public static DateTime ParseWithSpanAndFormatProviderInputParameters(string dateString, string culture) - => DateTime.Parse(dateString.AsSpan(), new CultureInfo(culture)); + public static DateTime ParseWithSpanAndFormatProviderInputParameters(string dateString, string culture) + => DateTime.Parse(dateString.AsSpan(), new CultureInfo(culture)); - public static DateTime ParseWithSpanAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string culture, DateTimeStyles dateTimeStyles) - => DateTime.Parse(dateString.AsSpan(), new CultureInfo(culture), dateTimeStyles); - } + public static DateTime ParseWithSpanAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string culture, DateTimeStyles dateTimeStyles) + => DateTime.Parse(dateString.AsSpan(), new CultureInfo(culture), dateTimeStyles); } diff --git a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp.csproj b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp.csproj index f02677bf64..dfb40caafc 100644 --- a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp.csproj +++ b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp.csproj @@ -2,7 +2,7 @@ Exe - net7.0 + net10.0 enable enable diff --git a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/Program.cs b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/Program.cs index a445576174..d57daa451b 100644 --- a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/Program.cs +++ b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/Program.cs @@ -1,234 +1,225 @@ -using System.Globalization; - -namespace ParsingDateTimeInCSharp +using System.Globalization; +using ParsingDateTimeInCSharp; + +const string DATESTRING_MMDDYYYY_HHMMSS = "1/15/2023 02:21:37"; +const string DATESTRING_DDMYYYY_HHMMSS_TIME = "15/1/2023 02:21:37"; +const string DATESTRING_MMDDYYYY = "1/15/2023"; +const string DATESTRING_DDMMYYYY = "15/1/2023"; +const string DATESTRING_DD_MM_YYYY = "15-01-2023"; +const string DATESTRING_EST_TIMEZONE = "2023/1/15 14:21:37-05:00"; +const string DATESTRING_DDMYYYY_HHMMSS = "15/1/2023 10:12:12"; + +const string DATEFORMAT_DD_MM_YYYY = "dd-MM-yyyy"; +const string DATEFORMAT_DDMYYYY_HHMMSS = "dd/M/yyyy hh:mm:ss"; +const string DATESTRING_YYYYMMDD_ROUNDTRIP = "2023-01-15T14:12:12.0000000Z"; +const string DATEFORMAT_ROUNDTRIP = "o"; + +const string CULTURE_FR = "fr-FR"; +const string CULTURE_EN_GB = "en-GB"; + +const DateTimeStyles STYLE_ASSUME_UNIVERSAL = DateTimeStyles.AssumeUniversal; +const DateTimeStyles STYLE_ADJUST_TO_UNIVERSAL = DateTimeStyles.AdjustToUniversal; +const DateTimeStyles STYLE_NONE = DateTimeStyles.None; +const DateTimeStyles STYLE_ROUND_TRIP = DateTimeStyles.RoundtripKind; + +var cultureInvariant = CultureInfo.InvariantCulture; + +string[] dateFormats = { "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyyMMdd'T'HH:mm:ss.fff'Z'", "yyyyMMdd'T'HH:mm:ss'Z'", "dd-MM-yyyy HH:mm:ss", "dd/MM/yyyy HH:mm:ss" }; +var dateStringKeyValuePairs = new Dictionary +{ + { "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", "2023-01-15T14:12:12.000Z" }, + { "yyyy-MM-dd'T'HH:mm:ss'Z'", "2023-01-15T14:12:12Z" }, + { "yyyyMMdd'T'HH:mm:ss.fff'Z'", "20230115T14:12:12.000Z" }, + { "yyyyMMdd'T'HH:mm:ss'Z'", "20230115T14:12:12Z" }, + { "dd-MM-yyyy HH:mm:ss", "15-01-2023 14:12:12" }, + { "dd/MM/yyyy HH:mm:ss", "15/01/2023 14:12:12" } +}; + +/* + * Printing the Current Culture + */ +DateTime date = new(2023, 1, 15, 14, 21, 37); +Console.WriteLine($"My current culture: {CultureInfo.CurrentCulture}"); +Console.WriteLine($"My date in the current culture({CultureInfo.CurrentCulture}): {date}"); + +/* + * Changing the Current Culture + */ +var culture = CultureInfo.GetCultureInfo("en-GB"); +Console.WriteLine($"My date in the culture({culture}): {date.ToString(culture)}"); +Console.WriteLine($"Current Culture: {Thread.CurrentThread.CurrentCulture.Name}"); + +#region Parse overloads + +Console.WriteLine("\nOverload: Parse()"); +try +{ + /* + * Parse(String) + */ + Console.WriteLine("\nOverload: Parse(String)"); + Console.WriteLine(ParseMethod.ParseWithStringInputParameter(DATESTRING_MMDDYYYY_HHMMSS)); /* Output under en-US: 1/15/2023 2:21:37 AM */ + + /* + * Parse(String, IFormatProvider) + */ + Console.WriteLine("\nOverload: Parse(String, IFormatProvider)"); + Console.WriteLine(ParseMethod.ParseWithStringAndFormatProviderInputParameters(DATESTRING_DDMYYYY_HHMMSS_TIME, CULTURE_FR)); /* Output under en-US: 1/15/2023 2:21:37 AM */ + + /* + * Parse(String, IFormatProvider, DateTimeStyles) + */ + Console.WriteLine("\nParse(String, IFormatProvider, DateTimeStyles)"); + Console.WriteLine(ParseMethod.ParseWithStringAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_DDMYYYY_HHMMSS_TIME, CULTURE_FR, STYLE_ASSUME_UNIVERSAL)); /* Output under en-US, host at UTC+01:00: 1/15/2023 3:21:37 AM */ + + /* + * Parse(ReadOnlySpan, IFormatProvider) + */ + Console.WriteLine("\nParse(ReadOnlySpan, IFormatProvider)"); + Console.WriteLine(ParseMethod.ParseWithSpanAndFormatProviderInputParameters(DATESTRING_DDMYYYY_HHMMSS_TIME, CULTURE_FR)); /* Output under en-US: 1/15/2023 2:21:37 AM */ + + /* + * Parse(ReadOnlySpan, IFormatProvider, DateTimeStyles) + */ + Console.WriteLine("\nParse(ReadOnlySpan, IFormatProvider, DateTimeStyles)"); + Console.WriteLine(ParseMethod.ParseWithSpanAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_DDMYYYY_HHMMSS_TIME, CULTURE_FR, STYLE_ASSUME_UNIVERSAL)); /* Output under en-US, host at UTC+01:00: 1/15/2023 3:21:37 AM */ +} +catch (ArgumentNullException e) +{ + Console.WriteLine(e.Message); +} +catch (ArgumentException e) +{ + Console.WriteLine(e.Message); +} +catch (FormatException e) { - internal class Program - { - private const string DATESTRING = "15/1/2023 02:21:37"; - private const string DATESTRING_MMDDYYYY = "1/15/2023"; - private const string DATESTRING_DDMMYYYY = "15/1/2023"; - private const string DATESTRING_DD_MM_YYYY = "15-01-2023"; - private const string DATESTRING_EST_TIMEZONE = "2023/1/15 14:21:37-05:00"; - private const string DATESTRING_DDMYYYY_HHMMSS = "15/1/2023 10:12:12"; - - private const string DATEFORMAT_DD_MM_YYYY = "dd-MM-yyyy"; - private const string DATEFORMAT_DDMYYYY_HHMMSS = "15/1/2023 10:12:12"; - private const string DATESTRING_YYYYMMDD_ROUNDTRIP = "2023-01-15T14:12:12.0000000Z"; - private const string DATEFORMAT_ROUNDTRIP = "o"; - - private const string CULTURE_FR = "fr-FR"; - private const string CULTURE_EN_GB = "en-GB"; - - private const DateTimeStyles STYLE_ASSUME_UNIVERSAL = DateTimeStyles.AssumeUniversal; - private const DateTimeStyles STYLE_ADJUST_TO_UNIVERSAL = DateTimeStyles.AdjustToUniversal; - private const DateTimeStyles STYLE_NONE = DateTimeStyles.None; - private const DateTimeStyles STYLE_ROUND_TRIP = DateTimeStyles.RoundtripKind; - - private static readonly CultureInfo _cultureInvariant = CultureInfo.InvariantCulture; - - private static readonly string[] _dateFormats = { "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyyMMdd'T'HH:mm:ss.fff'Z'", "yyyyMMdd'T'HH:mm:ss'Z'", "dd-MM-yyyy HH:mm:ss", "dd/MM/yyyy HH:mm:ss" }; - private static readonly Dictionary _dateStringKeyValuePairs = new() - { - { "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", "2023-01-15T14:12:12.000Z" }, - { "yyyy-MM-dd'T'HH:mm:ss'Z'", "2023-01-15T14:12:12Z" }, - { "yyyyMMdd'T'HH:mm:ss.fff'Z'", "20230115T14:12:12.000Z" }, - { "yyyyMMdd'T'HH:mm:ss'Z'", "20230115T14:12:12Z" }, - { "dd-MM-yyyy HH:mm:ss", "15-01-2023 14:12:12" }, - { "dd/MM/yyyy HH:mm:ss", "15/01/2023 14:12:12" } - }; - - static void Main(string[] args) - { - /* - * Printing the Current Culture - */ - DateTime date = new(2023, 1, 15, 14, 21, 37); - Console.WriteLine($"My current culture: {CultureInfo.CurrentCulture}"); - Console.WriteLine($"My date in the current culture({CultureInfo.CurrentCulture}): {date}"); - - /* - * Changing the Current Culture - */ - var culture = CultureInfo.GetCultureInfo("en-GB"); - Console.WriteLine($"My date in the culture({culture}): {date.ToString(culture)}"); - Console.WriteLine($"Current Culture: {Thread.CurrentThread.CurrentCulture.Name}"); - - #region Parse overloads - - Console.WriteLine("\nOverload: Parse()"); - try - { - /* - * Parse(String) - */ - Console.WriteLine("\nOverload: Parse(String)"); - Console.WriteLine(ParseMethod.ParseWithStringInputParameter(DATESTRING)); /* Output: 1/15/2023 2:21:37 AM */ - - /* - * Parse(String, IFormatProvider) - */ - Console.WriteLine("\nOverload: Parse(String, IFormatProvider)"); - Console.WriteLine(ParseMethod.ParseWithStringAndFormatProviderInputParameters(DATESTRING, CULTURE_FR)); /* Output: 15/1/2023 2:21:37 AM */ - - /* - * Parse(String, IFormatProvider, DateTimeStyles) - */ - Console.WriteLine("\nParse(String, IFormatProvider, DateTimeStyles)"); - Console.WriteLine(ParseMethod.ParseWithStringAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING, CULTURE_FR, STYLE_ASSUME_UNIVERSAL)); /* Output: 15/01/2023 1:21:37 PM */ - - /* - * Parse(ReadOnlySpan, IFormatProvider) - */ - Console.WriteLine("\nParse(ReadOnlySpan, IFormatProvider)"); - Console.WriteLine(ParseMethod.ParseWithSpanAndFormatProviderInputParameters(DATESTRING, CULTURE_FR)); /* Output: 15/01/2023 2:21:37 AM */ - - /* - * Parse(ReadOnlySpan, IFormatProvider, DateTimeStyles) - */ - Console.WriteLine("\nParse(ReadOnlySpan, IFormatProvider, DateTimeStyles)"); - Console.WriteLine(ParseMethod.ParseWithSpanAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING, CULTURE_FR, STYLE_ASSUME_UNIVERSAL)); /* Output: 15 / 01 / 2023 1:21:37 PM */ - } - catch (ArgumentNullException e) - { - Console.WriteLine(e.Message); - } - catch (ArgumentException e) - { - Console.WriteLine(e.Message); - } - catch (FormatException e) - { - Console.WriteLine(e.Message); - } - - #endregion - - #region TryParse overloads - - /* - * TryParse(String, DateTime) - */ - Console.WriteLine("\nOverload: TryParse(String, DateTime)"); - TryParseMethod.TryParseWithStringInputParameter(DATESTRING_MMDDYYYY, out var parsedDate); - Console.WriteLine(parsedDate); /* Output: 1/15/2023 12:00:00 AM */ - - /* - * TryParse(String, IFormatProvider, DateTime) - */ - Console.WriteLine("\nOverload: TryParse(String, IFormatProvider, DateTime)"); - TryParseMethod.TryParseWithStringAndFormatProviderInputParameters(DATESTRING_DDMMYYYY, CULTURE_EN_GB, out parsedDate); - Console.WriteLine(parsedDate); /* Output: 15/01/2023 12:00:00 AM */ - - /* - * TryParse(String, IFormatProvider, DateTimeStyles, DateTime) - */ - Console.WriteLine("\nOverload: TryParse(String, IFormatProvider, DateTimeStyles, DateTime)"); - TryParseMethod.TryParseWithStringAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_EST_TIMEZONE, CULTURE_EN_GB, STYLE_ADJUST_TO_UNIVERSAL, out parsedDate); - Console.WriteLine(parsedDate); /* Output: 15/01/2023 7:21:37 PM */ - - /* - * TryParse(ReadOnlySpan, DateTime) - */ - Console.WriteLine("\nOverload: TryParse(ReadOnlySpan, DateTime)"); - TryParseMethod.TryParseWithSpanInputParameter(DATESTRING_MMDDYYYY, out parsedDate); - Console.WriteLine(parsedDate); /* Output: 1/15/2023 12:00:00 AM */ - - /* - * TryParse(ReadOnlySpan, IFormatProvider, DateTime) - */ - Console.WriteLine("\nOverload: TryParse(ReadOnlySpan, IFormatProvider, DateTime)"); - TryParseMethod.TryParseWithSpanAndFormatProviderInputParameters(DATESTRING_DDMMYYYY, CULTURE_EN_GB, out parsedDate); - Console.WriteLine(parsedDate); /* Output: 15/01/2023 12:00:00 AM */ - - /* - * TryParse(ReadOnlySpan, IFormatProvider, DateTimeStyles, DateTime) - */ - Console.WriteLine("\nOverload: TryParse(ReadOnlySpan, IFormatProvider, DateTimeStyles, DateTime)"); - TryParseMethod.TryParseWithSpanAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_DDMMYYYY, CULTURE_EN_GB, STYLE_NONE, out parsedDate); - Console.WriteLine(parsedDate); /* Output: 15/01/2023 12:00:00 AM */ - - #endregion - - #region ParseExact - /* - * ParseExact(String, String, IFormatProvider) - */ - Console.WriteLine("\nOverload: ParseExact(String, String, IFormatProvider)"); - Console.WriteLine(ParseExactMethod.ParseExactWithStringAndStringAndFormatProviderInputParameters(DATESTRING_DDMYYYY_HHMMSS, DATEFORMAT_DDMYYYY_HHMMSS, CULTURE_FR)); /* Output: 15/01/2023 10:12:12 AM */ - - /* - * ParseExact(String, String, IFormatProvider, DateTimeStyles) - */ - Console.WriteLine("\nOverload: ParseExact(String, String, IFormatProvider, DateTimeStyles)"); - Console.WriteLine(ParseExactMethod.ParseExactWithStringAndStringAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_YYYYMMDD_ROUNDTRIP, DATEFORMAT_ROUNDTRIP, CULTURE_FR, STYLE_ROUND_TRIP)); /* Output: 15/01/2023 2:12:12 PM */ - - /* - * ParseExact(ReadOnlySpan, ReadOnlySpan, IFormatProvider, DateTimeStyles) - */ - Console.WriteLine("\nOverload: ParseExact(ReadOnlySpan, ReadOnlySpan, IFormatProvider, DateTimeStyles)"); - Console.WriteLine(ParseExactMethod.ParseExactWithSpanAndSpanAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_YYYYMMDD_ROUNDTRIP, DATEFORMAT_ROUNDTRIP, CULTURE_FR, STYLE_ROUND_TRIP)); /* Output: 1/15/2023 2:12:12 PM */ - - /* - * ParseExact(String, String[], IFormatProvider, DateTimeStyles) - */ - Console.WriteLine("\nOverload: ParseExact(String, String[], IFormatProvider, DateTimeStyles)"); - var resultParseExactKeyValuePair = ParseExactMethod.ParseExactWithStringAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(_dateStringKeyValuePairs, _dateFormats, _cultureInvariant, STYLE_NONE); - foreach (var result in resultParseExactKeyValuePair) - { - Console.WriteLine(result.Value); - } - - /* - * ParseExact(ReadOnlySpan, String[], IFormatProvider, DateTimeStyles) - */ - Console.WriteLine("\nOverload: ParseExact(ReadOnlySpan, String[], IFormatProvider, DateTimeStyles)"); - resultParseExactKeyValuePair = ParseExactMethod.ParseExactWithSpanAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(_dateStringKeyValuePairs, _dateFormats, _cultureInvariant, STYLE_NONE); - foreach (var result in resultParseExactKeyValuePair) - { - Console.WriteLine(result.Value); - } - - #endregion - - #region TryParseExact - - /* - * TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) - */ - Console.WriteLine("\nOverload: TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)"); - TryParseExactMethod.TryParseExactWithStringAndStringAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_DD_MM_YYYY, DATEFORMAT_DD_MM_YYYY, _cultureInvariant, STYLE_NONE, out parsedDate); - Console.WriteLine(parsedDate); /* Output: 1/15/2023 12:00:00 AM */ - - /* - * TryParseExact(ReadOnlySpan, ReadOnlySpan, IFormatProvider, DateTimeStyles, DateTime) - */ - Console.WriteLine("\nOverload: TryParseExact(ReadOnlySpan, ReadOnlySpan, IFormatProvider, DateTimeStyles, DateTime)"); - TryParseExactMethod.TryParseExactWithSpanAndSpanAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_DD_MM_YYYY, DATEFORMAT_DD_MM_YYYY, _cultureInvariant, STYLE_NONE, out parsedDate); - Console.WriteLine(parsedDate); /* Output: 1/15/2023 12:00:00 AM */ - - /* - * TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) - */ - Console.WriteLine("\nOverload: TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)"); - var resultTryParseExacKeyValuePair = TryParseExactMethod.TryParseExactWithStringAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(_dateStringKeyValuePairs, _dateFormats, _cultureInvariant, STYLE_NONE); - foreach (var result in resultTryParseExacKeyValuePair) - { - Console.WriteLine(result.Value); - } - - /* - * TryParseExact(ReadOnlySpan, String[], IFormatProvider, DateTimeStyles, DateTime) - */ - Console.WriteLine("\nOverload: TryParseExact(ReadOnlySpan, String[], IFormatProvider, DateTimeStyles, DateTime)"); - resultTryParseExacKeyValuePair = TryParseExactMethod.TryParseExactWithSpanAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(_dateStringKeyValuePairs, _dateFormats, _cultureInvariant, STYLE_NONE); - foreach (var result in resultTryParseExacKeyValuePair) - { - Console.WriteLine(result.Value); - } - - #endregion - - Console.ReadKey(); - } - } -} \ No newline at end of file + Console.WriteLine(e.Message); +} + +#endregion + +#region TryParse overloads + +/* + * TryParse(String, DateTime) + */ +Console.WriteLine("\nOverload: TryParse(String, DateTime)"); +TryParseMethod.TryParseWithStringInputParameter(DATESTRING_MMDDYYYY, out var parsedDate); +Console.WriteLine(parsedDate); /* Output under en-US: 1/15/2023 12:00:00 AM */ + +/* + * TryParse(String, IFormatProvider, DateTime) + */ +Console.WriteLine("\nOverload: TryParse(String, IFormatProvider, DateTime)"); +TryParseMethod.TryParseWithStringAndFormatProviderInputParameters(DATESTRING_DDMMYYYY, CULTURE_EN_GB, out parsedDate); +Console.WriteLine(parsedDate); /* Output under en-US: 1/15/2023 12:00:00 AM */ + +/* + * TryParse(String, IFormatProvider, DateTimeStyles, DateTime) + */ +Console.WriteLine("\nOverload: TryParse(String, IFormatProvider, DateTimeStyles, DateTime)"); +TryParseMethod.TryParseWithStringAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_EST_TIMEZONE, CULTURE_EN_GB, STYLE_ADJUST_TO_UNIVERSAL, out parsedDate); +Console.WriteLine(parsedDate); /* Output under en-US: 1/15/2023 7:21:37 PM */ + +/* + * TryParse(ReadOnlySpan, DateTime) + */ +Console.WriteLine("\nOverload: TryParse(ReadOnlySpan, DateTime)"); +TryParseMethod.TryParseWithSpanInputParameter(DATESTRING_MMDDYYYY, out parsedDate); +Console.WriteLine(parsedDate); /* Output under en-US: 1/15/2023 12:00:00 AM */ + +/* + * TryParse(ReadOnlySpan, IFormatProvider, DateTime) + */ +Console.WriteLine("\nOverload: TryParse(ReadOnlySpan, IFormatProvider, DateTime)"); +TryParseMethod.TryParseWithSpanAndFormatProviderInputParameters(DATESTRING_DDMMYYYY, CULTURE_EN_GB, out parsedDate); +Console.WriteLine(parsedDate); /* Output under en-US: 1/15/2023 12:00:00 AM */ + +/* + * TryParse(ReadOnlySpan, IFormatProvider, DateTimeStyles, DateTime) + */ +Console.WriteLine("\nOverload: TryParse(ReadOnlySpan, IFormatProvider, DateTimeStyles, DateTime)"); +TryParseMethod.TryParseWithSpanAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_DDMMYYYY, CULTURE_EN_GB, STYLE_NONE, out parsedDate); +Console.WriteLine(parsedDate); /* Output under en-US: 1/15/2023 12:00:00 AM */ + +#endregion + +#region ParseExact +/* + * ParseExact(String, String, IFormatProvider) + */ +Console.WriteLine("\nOverload: ParseExact(String, String, IFormatProvider)"); +Console.WriteLine(ParseExactMethod.ParseExactWithStringAndStringAndFormatProviderInputParameters(DATESTRING_DDMYYYY_HHMMSS, DATEFORMAT_DDMYYYY_HHMMSS, CULTURE_FR)); /* Output under en-US: 1/15/2023 10:12:12 AM */ + +/* + * ParseExact(String, String, IFormatProvider, DateTimeStyles) + */ +Console.WriteLine("\nOverload: ParseExact(String, String, IFormatProvider, DateTimeStyles)"); +Console.WriteLine(ParseExactMethod.ParseExactWithStringAndStringAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_YYYYMMDD_ROUNDTRIP, DATEFORMAT_ROUNDTRIP, CULTURE_FR, STYLE_ROUND_TRIP)); /* Output under en-US: 1/15/2023 2:12:12 PM */ + +/* + * ParseExact(ReadOnlySpan, ReadOnlySpan, IFormatProvider, DateTimeStyles) + */ +Console.WriteLine("\nOverload: ParseExact(ReadOnlySpan, ReadOnlySpan, IFormatProvider, DateTimeStyles)"); +Console.WriteLine(ParseExactMethod.ParseExactWithSpanAndSpanAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_YYYYMMDD_ROUNDTRIP, DATEFORMAT_ROUNDTRIP, CULTURE_FR, STYLE_ROUND_TRIP)); /* Output under en-US: 1/15/2023 2:12:12 PM */ + +/* + * ParseExact(String, String[], IFormatProvider, DateTimeStyles) + */ +Console.WriteLine("\nOverload: ParseExact(String, String[], IFormatProvider, DateTimeStyles)"); +var resultParseExactKeyValuePair = ParseExactMethod.ParseExactWithStringAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(dateStringKeyValuePairs, dateFormats, cultureInvariant, STYLE_NONE); +foreach (var result in resultParseExactKeyValuePair) +{ + Console.WriteLine(result.Value); +} + +/* + * ParseExact(ReadOnlySpan, String[], IFormatProvider, DateTimeStyles) + */ +Console.WriteLine("\nOverload: ParseExact(ReadOnlySpan, String[], IFormatProvider, DateTimeStyles)"); +resultParseExactKeyValuePair = ParseExactMethod.ParseExactWithSpanAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(dateStringKeyValuePairs, dateFormats, cultureInvariant, STYLE_NONE); +foreach (var result in resultParseExactKeyValuePair) +{ + Console.WriteLine(result.Value); +} + +#endregion + +#region TryParseExact + +/* + * TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) + */ +Console.WriteLine("\nOverload: TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)"); +TryParseExactMethod.TryParseExactWithStringAndStringAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_DD_MM_YYYY, DATEFORMAT_DD_MM_YYYY, cultureInvariant, STYLE_NONE, out parsedDate); +Console.WriteLine(parsedDate); /* Output under en-US: 1/15/2023 12:00:00 AM */ + +/* + * TryParseExact(ReadOnlySpan, ReadOnlySpan, IFormatProvider, DateTimeStyles, DateTime) + */ +Console.WriteLine("\nOverload: TryParseExact(ReadOnlySpan, ReadOnlySpan, IFormatProvider, DateTimeStyles, DateTime)"); +TryParseExactMethod.TryParseExactWithSpanAndSpanAndFormatProviderAndDateTimeStylesInputParameters(DATESTRING_DD_MM_YYYY, DATEFORMAT_DD_MM_YYYY, cultureInvariant, STYLE_NONE, out parsedDate); +Console.WriteLine(parsedDate); /* Output under en-US: 1/15/2023 12:00:00 AM */ + +/* + * TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) + */ +Console.WriteLine("\nOverload: TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)"); +var resultTryParseExacKeyValuePair = TryParseExactMethod.TryParseExactWithStringAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(dateStringKeyValuePairs, dateFormats, cultureInvariant, STYLE_NONE); +foreach (var result in resultTryParseExacKeyValuePair) +{ + Console.WriteLine(result.Value); +} + +/* + * TryParseExact(ReadOnlySpan, String[], IFormatProvider, DateTimeStyles, DateTime) + */ +Console.WriteLine("\nOverload: TryParseExact(ReadOnlySpan, String[], IFormatProvider, DateTimeStyles, DateTime)"); +resultTryParseExacKeyValuePair = TryParseExactMethod.TryParseExactWithSpanAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(dateStringKeyValuePairs, dateFormats, cultureInvariant, STYLE_NONE); +foreach (var result in resultTryParseExacKeyValuePair) +{ + Console.WriteLine(result.Value); +} + +#endregion diff --git a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/TryParseExactMethod.cs b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/TryParseExactMethod.cs index d1a2b7dcdb..696aa3890d 100644 --- a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/TryParseExactMethod.cs +++ b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/TryParseExactMethod.cs @@ -1,39 +1,38 @@ using System.Globalization; -namespace ParsingDateTimeInCSharp -{ - public static class TryParseExactMethod - { - public static bool TryParseExactWithStringAndStringAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string format, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles, out DateTime parsedDate) - => DateTime.TryParseExact(dateString, format, cultureInfo, dateTimeStyles, out parsedDate); +namespace ParsingDateTimeInCSharp; - public static bool TryParseExactWithSpanAndSpanAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string format, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles, out DateTime parsedDate) - => DateTime.TryParseExact(dateString.AsSpan(), format.AsSpan(), cultureInfo, dateTimeStyles, out parsedDate); +public static class TryParseExactMethod +{ + public static bool TryParseExactWithStringAndStringAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string format, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles, out DateTime parsedDate) + => DateTime.TryParseExact(dateString, format, cultureInfo, dateTimeStyles, out parsedDate); - public static Dictionary TryParseExactWithStringAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(Dictionary dateStrings, string[] formats, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles) - { - var result = new Dictionary(); + public static bool TryParseExactWithSpanAndSpanAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string format, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles, out DateTime parsedDate) + => DateTime.TryParseExact(dateString.AsSpan(), format.AsSpan(), cultureInfo, dateTimeStyles, out parsedDate); - foreach (var format in formats) - { - var dateString = dateStrings[format]; - result.Add(dateString, (DateTime.TryParseExact(dateString, formats, cultureInfo, dateTimeStyles, out var parsedDate), parsedDate)); - } + public static Dictionary TryParseExactWithStringAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(Dictionary dateStrings, string[] formats, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles) + { + var result = new Dictionary(); - return result; + foreach (var format in formats) + { + var dateString = dateStrings[format]; + result.Add(dateString, (DateTime.TryParseExact(dateString, formats, cultureInfo, dateTimeStyles, out var parsedDate), parsedDate)); } - public static Dictionary TryParseExactWithSpanAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(Dictionary dateStrings, string[] formats, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles) - { - var result = new Dictionary(); + return result; + } - foreach (var format in formats) - { - var dateSpan = dateStrings[format].AsSpan(); - result.Add(dateStrings[format], (DateTime.TryParseExact(dateSpan, formats, cultureInfo, dateTimeStyles, out var parsedDate), parsedDate)); - } + public static Dictionary TryParseExactWithSpanAndStringArrayAndFormatProviderAndDateTimeStylesInputParameters(Dictionary dateStrings, string[] formats, CultureInfo cultureInfo, DateTimeStyles dateTimeStyles) + { + var result = new Dictionary(); - return result; + foreach (var format in formats) + { + var dateSpan = dateStrings[format].AsSpan(); + result.Add(dateStrings[format], (DateTime.TryParseExact(dateSpan, formats, cultureInfo, dateTimeStyles, out var parsedDate), parsedDate)); } + + return result; } } diff --git a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/TryParseMethod.cs b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/TryParseMethod.cs index 1768fb78a9..5feb1bb00d 100644 --- a/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/TryParseMethod.cs +++ b/dotnet-datetime/ParsingDateTimeInCSharp/ParsingDateTimeInCSharp/TryParseMethod.cs @@ -1,25 +1,24 @@ using System.Globalization; -namespace ParsingDateTimeInCSharp +namespace ParsingDateTimeInCSharp; + +public static class TryParseMethod { - public static class TryParseMethod - { - public static bool TryParseWithStringInputParameter(string dateString, out DateTime parsedDate) - => DateTime.TryParse(dateString, out parsedDate); + public static bool TryParseWithStringInputParameter(string dateString, out DateTime parsedDate) + => DateTime.TryParse(dateString, out parsedDate); - public static bool TryParseWithStringAndFormatProviderInputParameters(string dateString, string culture, out DateTime parsedDate) - => DateTime.TryParse(dateString, new CultureInfo(culture), out parsedDate); + public static bool TryParseWithStringAndFormatProviderInputParameters(string dateString, string culture, out DateTime parsedDate) + => DateTime.TryParse(dateString, new CultureInfo(culture), out parsedDate); - public static bool TryParseWithStringAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string culture, DateTimeStyles dateTimeStyles, out DateTime parsedDate) - => DateTime.TryParse(dateString, new CultureInfo(culture), dateTimeStyles, out parsedDate); + public static bool TryParseWithStringAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string culture, DateTimeStyles dateTimeStyles, out DateTime parsedDate) + => DateTime.TryParse(dateString, new CultureInfo(culture), dateTimeStyles, out parsedDate); - public static bool TryParseWithSpanInputParameter(string dateString, out DateTime parsedDate) - => DateTime.TryParse(dateString.AsSpan(), out parsedDate); + public static bool TryParseWithSpanInputParameter(string dateString, out DateTime parsedDate) + => DateTime.TryParse(dateString.AsSpan(), out parsedDate); - public static bool TryParseWithSpanAndFormatProviderInputParameters(string dateString, string culture, out DateTime parsedDate) - => DateTime.TryParse(dateString.AsSpan(), new CultureInfo(culture), out parsedDate); + public static bool TryParseWithSpanAndFormatProviderInputParameters(string dateString, string culture, out DateTime parsedDate) + => DateTime.TryParse(dateString.AsSpan(), new CultureInfo(culture), out parsedDate); - public static bool TryParseWithSpanAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string culture, DateTimeStyles dateTimeStyles, out DateTime parsedDate) - => DateTime.TryParse(dateString.AsSpan(), new CultureInfo(culture), dateTimeStyles, out parsedDate); - } + public static bool TryParseWithSpanAndFormatProviderAndDateTimeStylesInputParameters(string dateString, string culture, DateTimeStyles dateTimeStyles, out DateTime parsedDate) + => DateTime.TryParse(dateString.AsSpan(), new CultureInfo(culture), dateTimeStyles, out parsedDate); }