接受特定格式的数据

时间:2013-07-28 00:22:55

标签: c#

我的程序必须接受用户以此格式月,日,年(mm / dd / yyyy)输入的日期,而不是任何其他顺序,如果输入的详细信息采用此格式(mm / dd / yyyy) )它存储在多维数组中。

3 个答案:

答案 0 :(得分:2)

DateTime.ParseExact与正确的格式字符串和CultureInfo.InvariantCulture

一起使用
dates[0] = DateTime.ParseExact("07/28/2013", "MM/dd/yyyy", CultureInfo.InvariantCulture);

/通常是您当前文化的日期分隔符的替换字符(例如-.)。要强制/作为分隔符,您需要指定CultureInfo.InvariantCulture

请参阅:The "/" Custom Format Specifier

您可以使用DateTime.TryParseExact检查用户是否输入了有效格式:

DateTime dt;
if (DateTime.TryParseExact("07/28/2013", "MM/dd/yyyy", CultureInfo.InvariantCulture,DateTimeStyles.None, out dt))
{ 
    // valid date
}

答案 1 :(得分:0)

假设用户在TextBox中输入日期

        DateTime Test;
        if (DateTime.TryParseExact(textBox1.Text, "mm/dd/yyyy", null, System.Globalization.DateTimeStyles.None, out Test) == true)
            //do whatever
        else
            //do something else

答案 2 :(得分:0)

我不确定你的意思

  

它已存储在多维数组中。

这是一个完整的程序,用于提示用户输入您指定格式的日期。

void Main()
{
    string datePrompt = "Please enter the date mm/dd/yyyy: ";
    string invalidDateMessage = "Invalid date format, please use mm/dd/yyyy, for example you could type 01/07/1980.";

    DateTime dateTime;
    bool done = false;
    while(!done)
    {
        string userInput = Prompt(datePrompt, Console.Out, Console.In);
        done = ValidateAndParseDate(userInput, out dateTime, Console.Out, invalidDateMessage);
    }
    Console.WriteLine("I can now store {0} in a multi dimensional array!", dateTime.ToShortDateString());
}

string Prompt(string prompt, TextWriter writer, TextReader reader)
{
    writer.Write(prompt);
    string line = reader.ReadLine();
    return line;
}

bool ValidateAndParseDate(string dateString, out DateTime dateTime, TextWriter writer, string errorMessage)
{
    bool isValid = DateTime.TryParseExact(
                                dateString,
                                "MM/dd/yyyy",
                                CultureInfo.InvariantCulture,
                                DateTimeStyles.None,
                                out dateTime);

    if(!isValid)
    {
        writer.WriteLine(errorMessage);
    }
    return isValid;
}