Aaron
Aaron

Reputation: 4480

Month in c# using DateTime

I am wondering if there is way to have the user enter a number like 01 and have that string converted to the month using dateTime. I know how to have the user enter a string such as 01/01/2011 and have the converted to a DateTime. Is there a way to use datetime to convert a two number string into a month. Something like this, but that would work

        Console.WriteLine("Please the month numerically");
        string date = Console.ReadLine();
        dt = Convert.ToDateTime(date).Month;

Upvotes: 2

Views: 5706

Answers (6)

Jakub Januszkiewicz
Jakub Januszkiewicz

Reputation: 4418

It is already built into the .NET framework: see System.Globalization.DateTimeFormatInfo.MonthNames

Upvotes: 2

gabsferreira
gabsferreira

Reputation: 3147

public static string ReturnMonthName(string pMonth)
{
    switch (pMonth)
    {
        case "01" :
            return "January";
        case "02":
            return "February";
        case "03":
            return "March";
        case "04":
            return "April";
        case "05":
            return "May";
        case "06":
            return "June";
        case "07":
            return "July";
        case "08":
            return "August";
        case "09":
            return "September";
        case "10":
            return "October";
        case "11":
            return "November";
        case "12":
            return "December";
        default:
            return "Invalid month";
    }

Upvotes: 0

Tigran
Tigran

Reputation: 62265

Your example is not complete, cause you need to specify which year and which day in the date.

Assuming that that data have to be of the current date, you can do something like this:

DateTime dt = new DateTime(DateTime.Now.Year, int.Parse("01"), DateTime.Now.Day);

Don't forget, obviously, add a couple of controls, like

  • Month range {1-12}
  • Month string is a number

EDIT

  int month =-1;
  if(int.TryParse(userInputString, out month)){
      if(month>=1 && month <=12) {

           DateTime dt = new DateTime(
                               DateTime.Now.Year, 
                               month, 
                               DateTime.Now.Day);
      }
  }     

Hope this helps.

Upvotes: 0

Joachim Isaksson
Joachim Isaksson

Reputation: 181077

You could probably get it jumping through some hoops with DateTime, however;

CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(int monthNumber);

is probably easier.

Upvotes: 21

Corey Ogburn
Corey Ogburn

Reputation: 24769

It'd be easier to just have an array of 12 elements, each being a month.

String[] Months = new String[] {"Jan", "Feb"}; //put all months in
Console.WriteLine("Please the month numerically");
string date = Console.ReadLine();
int index = 0;
if (!int.TryParse(date, out index)) {
    // handle error for input not being an int
}
dt = Months[index];

If you really wanted to stick with using the DateTime class, you could take in the month and then tag on some day and year and use the method you provided in your code. For example...

dt = Convert.ToDateTime(date + "/01/2012").Month;

But this is less advised.

Upvotes: 0

user1152631
user1152631

Reputation: 55

Strip the month from your datetime and use a switch/case select to assign your variable.

        switch (val)
        {
            case 1:
                MessageBox.Show("The day is - Sunday");
                break;
            case 2:
                MessageBox.Show("The day is - Monday");
                break;
            case 3:
                MessageBox.Show("The day is - Tuesday");
                break;
            case 4:
                MessageBox.Show("The day is - wednesday");
                break;
            case 5:
                MessageBox.Show("The day is - Thursday");
                break;
            case 6:
                MessageBox.Show("The day is - Friday");
                break;
            case 7:
                MessageBox.Show("The day is - Saturday");
                break;
            default:
                MessageBox.Show("Out of range !!");
                break;
        }

Upvotes: -3

Related Questions