有没有办法只通过ReadLine()将Date设置为DateTime类型变量?怎么样?

时间:2015-09-03 16:33:40

标签: c# datetime console-application

我知道我可以做到这一点并且有效

string Dob; //string
Console.WriteLine("Enter date of Birth in format DD/MM/YYYY: ");
Dob = Console.ReadLine();

但我想要这样的东西!预定义的方法或短路方式

DateTime Dob; //DateTime
Console.WriteLine("Enter date of Birth in format DD/MM/YYYY: ");
//What i am expecting, but is not possible as its DateTime 
Dob = Console.ReadLine(); // expects a string

是否有一种特定的方法可以直接从键盘将日期记录到Dob变量中。

DateTime类中是否有预定义的方法? 实现这一目标的最佳途径或最短途径是什么?

4 个答案:

答案 0 :(得分:6)

String filename = listentry.getName();     // full file name
String[] parts = filename.split("@");
String domain = parts[1].split("\\.")[0];
String[] names = parts[0].split("\\.");
String combinedNames = "";
for (String name : names) {
    combinedNames += firstUpper(name) + " ";
}
holder.text.setText(combinedNames + "- " + firstUpper(domain));

// "abc ABC" -> "Abc Abc"
public String firstUpper(String text) {
    return (text.substring(0,1).toUpperCase() + text.substring(1).toLowerCase());
}

答案 1 :(得分:1)

此方法使用指定的格式和特定​​于文化的格式信息将指定的日期和时间字符串表示形式转换为其DateTime等效形式。字符串表示的格式必须与指定的格式完全匹配。

DateTime myDate = DateTime.ParseExact("2009/05/08","yyyy/MM/dd",
System.Globalization.CultureInfo.InvariantCulture)

答案 2 :(得分:1)

您可以通过编写扩展函数来扩展.net中的字符串类。

public static class Extensions
{
    public static DateTime? Dob(this string strLine)
    {
        DateTime result;
        if(DateTime.TryParseExact(strLine, "dd/MM/yyyy",System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal,out result))
        {
            return result;
        }
        else 
        {
            return null;
        }
    }
}

然后,您可以在任何字符串对象上使用它。请参阅下面的示例,了解我正在谈论的内容。

    class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Please enter your date of birth in DD/MM/YYYY:");

        // Option 1.
        // The Console.ReadLine() function returns a string.
        string strDob = Console.ReadLine();
        DateTime? dob1 = strDob.Dob();


        // Option 2.
        // You can combine the two steps together into one line for smoother reading.
        DateTime? dob = Console.ReadLine().Dob();            
    }
}

注意:DateTime类型末尾的问号(?)转换DateTime" struct"成为一个可以为空的"对象"。如果你设置一个DateTime" struct"等于null它将抛出一个异常作为DateTime?可以设置为null。考虑使用DateTime是一种好习惯吗? (可以为空)而不是使用DateTime" struct"

答案 3 :(得分:0)

到目前为止,这是我发现的最简单,最短的方式,如cubrr所述。

DateTime Dob;
Console.WriteLine("Enter date of Birth in format MM/DD/YYYY: ");
//accepts date in MM/dd/yyyy format
Dob = DateTime.Parse(Console.ReadLine());