1

The bold text is where i need to change something but not sure what. I want the console to display the month as a string e.g 'Jul' 'Aug'... basically my coding for case 1 displays = 1/1/2001 and case 3 i want it to display = 1/Jan/2001

static void Main(string[] args)
{

    do
    {
        Console.WriteLine("Please select a date format by entering either the 1, 2 or 3 Key");
        Console.WriteLine(" 1 = dd/mm/yyyy ");
        Console.WriteLine(" 2 = mm/dd/yyyy ");
        Console.WriteLine(" 3 = dd/mmm/yyyy ");
    } while (!int.TryParse(Console.ReadLine(), out f) || f < 0 || f>3);

    switch(f)
    {
        case 1:
            getDate1();
            Console.WriteLine("The day after {0}/{1}/{2} is {3}", d, m, y, md.NextDay1());
            break;
        case 2:
            getAmericanDate();
            Console.WriteLine("The day after {1}/{0}/{2} is {3}", d, m, y, md.NextDay1());
            break;
        **case 3:
            getAbbreviatedMonth();
            Console.WriteLine("The day after {1}/{4}/{2} is {3}", d, m, y, md.NextDay1());
            break;**

    }


static void getAbbreviatedMonth() //dd/mmm/yyyy
{

    do
    {
        Console.Write("PLease enter the year (not earlier than 1812) as 4 digits  >> ");
    } while (!int.TryParse(Console.ReadLine(), out y) || y < 1812);


    do
    {
        Console.Write("Please enter the month as a three letter character ( e.g 'Jul')   >> ");
    } while (isCorrectMonth(Console.ReadLine()));


    do
    {

        Console.Write("Please enter the day as a whole between 1 & {0} >> ", DayInMonth(m, y));
    } while (!int.TryParse(Console.ReadLine(), out d) || d > DayInMonth(m, y) || d < 1);



    md = new myDate(d, m, y);
}


static bool isCorrectMonth(string monthToCheck)
{
    string stringToCheck = monthToCheck.ToLower();
    string[] stringArray = { "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec" };
    foreach (string x in stringArray)
    {
        if (x.Contains(stringToCheck))
        {
            // Process..
            return true;
        }
        else
        {
            return false;
        }
    }
    return false;
}

2 Answers 2

1
Console.WriteLine("The day after {1}/{4}/{2} is {3}", d, m, y, md.NextDay1())

Your arguments here should range from 0-3, not 1-4.

You might find it easier to parse your input into a DateTime, which could then easily be output in a variety of formats -- and you could find the next day simply by calling .AddDays(1).

Sign up to request clarification or add additional context in comments.

Comments

0

See this example to format the date:

DateTime time = DateTime.Now;             // Use current time.
string format = "MMM ddd d HH:mm yyyy";   // Use this format.
Console.WriteLine(time.ToString(format)); // Write to console.

Output is:

Feb Fri 27 11:41 2009

Source is http://www.dotnetperls.com/datetime-format

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.