我想在我的应用程序中显示当前时间。我想从服务器获取当前时间然后只是递增,这样我就不必每秒都从数据库中选择当前时间。我也不想使用类似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
。
答案 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秒。