Месяц в C # с использованием DateTime - PullRequest
2 голосов
/ 19 января 2012

Мне интересно, есть ли способ, чтобы пользователь ввел число наподобие 01 и преобразовал эту строку в месяц, используя dateTime. Я знаю, как заставить пользователя ввести строку, такую ​​как 01.01.2011, и преобразовать ее в DateTime. Есть ли способ использовать datetime для преобразования двухзначной строки в месяц. Примерно так, но это сработало бы

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

Ответы [ 6 ]

21 голосов
/ 20 января 2012

Однако вы, вероятно, можете прыгнуть через несколько обручей с DateTime;

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

, вероятно, проще.

2 голосов
/ 20 января 2012

Он уже встроен в платформу .NET: см. System.Globalization.DateTimeFormatInfo.MonthNames

0 голосов
/ 20 января 2012
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";
    }
0 голосов
/ 20 января 2012

Ваш пример неполон, потому что вам нужно указать, какая year и какая day в дате.

Предполагая, что эти данные должны иметь текущую дату, вы можете сделать что-то вроде этого:

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

Не забудьте, очевидно, добавить пару элементов управления, например

  • Диапазон месяцев {1-12}
  • Строка месяца - это число

РЕДАКТИРОВАТЬ

  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);
      }
  }     

Надеюсь, это поможет.

0 голосов
/ 20 января 2012

Было бы проще иметь массив из 12 элементов, каждый из которых равен месяцу.

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];

Если вы действительно хотите придерживаться класса DateTime, вы можете взять месяц, а затем пометить день и год и использовать метод, который вы указали в своем коде. Например ...

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

Но это менее рекомендуется.

0 голосов
/ 19 января 2012

Уберите месяц из даты и времени и используйте переключатель / регистр, чтобы назначить вашу переменную.

        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;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...