w3resource

C# Program: Convert user input to datetime with exception handling

C# Sharp Exception Handling: Exercise-9 with Solution

Write a C# program that creates a method that reads a date from the user in the format "dd/mm/yyyy" and converts it to a DateTime object. Handle an exception if the input format is invalid.

Sample Solution:

C# Sharp Code:

using System;

class Program {
  static void Main() {
    try {
      // Prompt the user to input a date in a specific format (dd/mm/yyyy)
      Console.Write("Input a date (format-> dd/mm/yyyy): ");
      string input = Console.ReadLine();

      // Convert the user-input string to a DateTime object using the ConvertToDate method
      DateTime date = ConvertToDate(input);

      // Display the formatted date to the user
      Console.WriteLine("Date: " + date.ToShortDateString());
    } catch (FormatException) {
      // Catch block for handling FormatException (invalid date format)
      Console.WriteLine("Error: Invalid date format. Please input a valid date in the format dd/mm/yyyy.");
    } catch (Exception ex) {
      // Catch block for handling other types of exceptions
      Console.WriteLine("An error occurred: " + ex.Message);
    }
  }

  // Method to convert a string to a DateTime object based on a specific format
  static DateTime ConvertToDate(string input) {
    // Define the date format expected from the user input
    string[] format = { "dd/MM/yyyy" };

    // Parse the input string to a DateTime object using the specified format
    return DateTime.ParseExact(input, format, null, System.Globalization.DateTimeStyles.None);
  }
}

Sample Output:

Input a date (format-> dd/mm/yyyy): 11/01/2019
Date: 11-01-2019
 
Input a date (format-> dd/mm/yyyy): 11/14/2019
Error: Invalid date format. Please input a valid date in the format dd/mm/yyyy.
  
Input a date (format-> dd/mm/yyyy): 00/00/2019
Error: Invalid date format. Please input a valid date in the format dd/mm/yyyy.
 
Input a date (format-> dd/mm/yyyy): 01-01-2019
Date: 01-01-2019

Explanation:

In the above exercise -

  • The "Main()" method prompts the user to enter a date in the format "dd/mm/yyyy" using Console.Write() and Console.ReadLine(). The input is stored in the input variable.
  • The program calls the ConvertToDate method, passing the input string as an argument.
  • The ConvertToDate method uses DateTime.ParseExact to convert the string to a DateTime object, specifying the desired format "dd/MM/yyyy". If the input string cannot be parsed according to the specified format, a FormatException is thrown.
  • In the "Main()" method, exceptions are handled using catch blocks. If a FormatException occurs, it means the input date format was invalid. The program catches this exception and displays an appropriate error message.
  • Any other exceptions are caught by the generic catch block, and a general error message is displayed.
  • The program displays the converted DateTime object using ToShortDateString() to format it as a short date string.

Flowchart:

Flowchart: Convert user input to datetime with exception handling.

C# Sharp Code Editor:

Improve this sample solution and post your code through Disqus

Previous: Divide two numbers with exception handling.
Next: Calculate square root with exception handling.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/csharp-exercises/exception-handling/csharp-exception-handling-exercise-9.php