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

C# - How do I get a user input for date and time

我希望能够使用创建点的日期和时间从数据库中获取点。我想通过询问用户 date/time 他们想要什么然后使用那个 date/time 来找到要点来做到这一点。这是我目前的代码,它得到了重点,但只有我 运行 代码的确切时间的数据。例如,我希望能够从 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());

非常感谢您的帮助。

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

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
}

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

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

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

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

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