2013-07-28 42 views
-1

我的程序必須接受用戶以這種格式的月份,日期,年份(mm/dd/yyyy)輸入的日期,而不是以任何其他順序輸入,並且如果輸入的詳細信息以此格式輸入(mm/dd/yyyy)它被存儲在多維數組中。接收特定格式的數據

+1

windows forms? Web表單? (另外,你是不是隻是問這樣的問題?) –

+0

你試過正則表達式嗎? – NSF

回答

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 
} 
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 
+0

'null'作爲第三個參數意味着_current culture_。因此,根據實際的日期分隔符,這種格式將被轉換爲'「mm-dd-yyyy」或「mm.dd.yyyy」。 –

+0

感謝您強調這一點,蒂姆! –

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; 
} 
相關問題