显示实际时间

时间:2015-07-05 23:04:14

标签: vb.net winforms

我想在我的应用程序中显示当前时间。我想从服务器获取当前时间然后只是递增,这样我就不必每秒都从数据库中选择当前时间。我也不想使用类似Date.Now().ToString("hh:mm:ss tt")的东西,因为客户端时间错误的可能性。

所以我要做的就是在页面加载中获取服务器时间,然后只增加它。我该怎么做?

这是我的代码从sql server

获取页面加载的时间
 con.Close()                                                                                                                     
 con.Open()                                                                                                                     
 Dim sqlcmd As New SqlCommand("Select getdate() as date", con)
 Dim sqlreader As SqlDataReader = sqlcmd .ExecuteReader
 sqlreader.read                                                                                                                                                                            
 date1 = sqlreader("date")
 con.Close()

 Currenttime.Text = date1.ToString("hh:mm:ss tt")

现在我只想每秒增加Currenttime.Text

3 个答案:

答案 0 :(得分:0)

在服务器端应用程序中使用DateTime.Now属性。

如果您想从数据库中获取它,可以使用GETDATE()函数。

答案 1 :(得分:0)

从sql server获取日期后,将其与用户的Date.Now()值进行比较,看看sql server date之间的区别是什么。

Dim diff as TimeSpan = sqlDateTime - Date.Now()

然后,当您想要更新显示的日期/时间时,将TimeSpan差异应用于Date.Now()以使用服务器日期调整本地日期。

Date.Now().addSeconds(diff.TotalSeconds).ToString("hh:mm:ss tt")

这段代码并不完美...首先我没有对它进行测试(我确定你会理解它背后的逻辑),但是你也应该注意到#39;如果用户在计算TimeSpan后更改系统日期/时间,则无效。如果你需要准确性,你还应该考虑从sql server传输dateTime时你会丢失几毫秒的事实。

根据您的需要,使用Timer对象每x毫秒调用上面的代码来更新显示的日期/时间。

答案 2 :(得分:0)

你可以用1000毫秒间隔从工具栏添加一个计时器,并添加一个代码,将你的时间增加1秒。