2015-07-10 65 views
0

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

//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()); 

非常感谢您的帮助。

+0

你问你如何从用户获得输入日期时间,然后用该输入检索数据库记录? – Ju66ernaut

+0

正确,在这种情况下,该数据库记录将以整列的形式出现 – Shutere

回答

0

你需要做的就是先问用户什么:

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对象。如果它是不正确的resultDateTime.MinValue所以我会检查:

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

正确的“DateTime”输入是什么? – Shutere

+0

例如'2015-01-01 00:00:00'这里是格式列表https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx –

0

你必须得到来自用户的输入和值存储在一个变量。

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

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

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

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

相关问题