vb.net中的日期时间问题
我面临着一个问题,如何计算两次之间的差值。当用户关闭主窗口时,我将一个字符串变量timeofday保存到数据库中。我需要获取当前时间,找出登录和注销时间之间的差异,并将其保存为总花费时间vb.net中的日期时间问题,vb.net,Vb.net,我面临着一个问题,如何计算两次之间的差值。当用户关闭主窗口时,我将一个字符串变量timeofday保存到数据库中。我需要获取当前时间,找出登录和注销时间之间的差异,并将其保存为总花费时间 我的问题是,我无法得到将字符串转换为时间并找出差异的解决方案。有什么建议吗 不应将数据库中的日期时间保存为字符串。但若您必须这样做,下面是如何将datetime转换为字符串和字符串之间的转换。在时间跨度上查找持续时间 Sub Main() ' generate two datetimes two se
我的问题是,我无法得到将字符串转换为时间并找出差异的解决方案。有什么建议吗 不应将数据库中的日期时间保存为字符串。但若您必须这样做,下面是如何将datetime转换为字符串和字符串之间的转换。在时间跨度上查找持续时间
Sub Main()
' generate two datetimes two seconds apart
Dim d1 As DateTime = DateTime.Now
Threading.Thread.Sleep(2000)
Dim d2 As DateTime = DateTime.Now
Console.WriteLine("d1: {0}, d2: {1}", d1, d2)
' convert the datetimes to strings and assign them
Dim s1 As String = d1.ToString("HH:mm:ss")
Dim s2 As String = d2.ToString("HH:mm:ss")
Console.WriteLine("s1: {0}, s2: {1}", s1, s2)
' parse the strings back into datetimes
d1 = DateTime.Parse(s1)
d2 = DateTime.Parse(s2)
Console.WriteLine("d1: {0}, d2: {1}", d1, d2)
' find the duration in total hours, minutes, or seconds
' the operation is performed on a timespan resulting from `DateTime.Subtract`
Dim hours = d2.Subtract(d1).TotalHours
Dim minutes = d2.Subtract(d1).TotalMinutes
Dim seconds = d2.Subtract(d1).TotalSeconds
' note: use one of the following, as they represent the same duration
' not a composite time
Console.WriteLine("Duration in hours: {0}", hours)
Console.WriteLine("Duration in minutes: {0}", minutes)
Console.WriteLine("Duration in seconds: {0}", seconds)
Console.ReadLine()
End Sub
输出
d1:11/29/2016 2:35:55,d2:11/29/2016 2:35:57
s1:14:35:55,s2:14:35:57
d1:11/29/2016 2:35:55,d2:11/29/2016 2:35:57
持续时间(小时):0.00055556
持续时间(分钟):0.0333333
持续时间(秒):2
注意:如果使用该格式,则会丢弃日期组件。系统将假定今天运行,如果应用程序在夜间运行,您可能会遇到问题。就个人而言,我会提供yyyy-MM-dd HH:MM:ss,或者根本不提供默认格式。您的时间数据在数据库中是什么样子的?如果您的数据库时间是字符串,选择字符串并使用它将其转换为DateTime对象…然后您可以对其进行日期/时间计算,它采用HH:MM:SS 24小时格式DateTime在几乎所有数据库中都可以轻松地保存为日期。时间可以是不同的,因为类型-TimeSpan-不太常见并且很难解析。但是,如果要计算两次之间的差值,请将其另存为DateTime。为方便起见,我将其保留为字符串,一旦您这样做,您就没有日期时间问题,您就有一个字符串不是datetimes问题请注意-如果您确实试图测量操作的运行时间,System.Diagnostics.Stopwatch比减去两个日期时间值更有效。此外,如果要减去两个本地日期时间值,可能会被夏令时转换捕获。请看@MattJohnson Ok,但我只是想回答OP的问题。我的问题是,我无法得到将字符串转换为时间并找出差异的解决方案。因为他在数据库中保存字符串,所以他还有其他问题。我认为,将你的精彩评论引向OP将实现更大的价值: