C# - 如何获取日期和时间的用户输入

时间:2015-07-10 14:37:41

标签: c# datetime console-application user-input

我希望能够使用创建点的日期和时间从数据库中获取一个点。我想通过询问用户他们想要的日期/时间来做到这一点,然后使用该日期/时间来找到该点。这是我目前的代码,它只是从我运行代码的确切时间得到的点数。我希望能够从例如6/4/2012 4:50:29获取数据。

//connect to pi server
    PIServers piServers = new PIServers();
         foreach (var server in piServers)
         {
             Console.WriteLine("Server: {0}", server.Name);
         }
         PIServer piServer = piServers.DefaultPIServer;
         Console.WriteLine("Default Server: {0}", piServer.Name);

        piServer.Connect();

        //get a PI Point
        var point = PIPoint.FindPIPoint(piServer, "Pipoint");

        var value = point.Snapshot();
        Console.WriteLine("Point {0} Value {1} {2}", point.Name,
        value.Value.ToString(),value.Timestamp.ToString());

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您需要做的是先询问用户:

Console.WriteLine("Enter date");
var userInput = Console.ReadLine();

现在userInput是一个字符串,因此您需要将其转换为DateTime对象,我不会直接转换它,因为它很容易获得InvalidCastException,所以我们应该使用内置的TryParse(String, out DateTime)来验证它是否是正确的DateTime

DateTime result;
DateTime.TryParse(userInput, out result);

如果userInput是正确的DateTime,那么result将是有效的DateTime对象。如果不正确,result将是DateTime.MinValue,所以我会检查:

if(!result.Equals(DateTime.MinValue))
{
  // Continue to look it up in the DB
}

答案 1 :(得分:0)

您必须从用户那里获得输入并将该值存储在变量中。

我假设var point = PIPoint.FindPIPoint(piServer, "Pipoint");是查询数据库匹配的代码行。

在这种情况下,您可能希望将日期时间作为字符串传递。 string input = Console.Readline();然后只需将userInput传递给FindPIPoint方法。

但是如果.FindPiPoint方法正在寻找日期时间,则需要先将其强制转换为日期时间对象。

由于这是假设任何可能的日期时间都可能匹配(我怀疑是这种情况),您应该为错误匹配添加一些错误处理。