Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中的日期时间问题_Vb.net - Fatal编程技术网

vb.net中的日期时间问题

vb.net中的日期时间问题,vb.net,Vb.net,我面临着一个问题,如何计算两次之间的差值。当用户关闭主窗口时,我将一个字符串变量timeofday保存到数据库中。我需要获取当前时间,找出登录和注销时间之间的差异,并将其保存为总花费时间 我的问题是,我无法得到将字符串转换为时间并找出差异的解决方案。有什么建议吗 不应将数据库中的日期时间保存为字符串。但若您必须这样做,下面是如何将datetime转换为字符串和字符串之间的转换。在时间跨度上查找持续时间 Sub Main() ' generate two datetimes two se

我面临着一个问题,如何计算两次之间的差值。当用户关闭主窗口时,我将一个字符串变量timeofday保存到数据库中。我需要获取当前时间,找出登录和注销时间之间的差异,并将其保存为总花费时间


我的问题是,我无法得到将字符串转换为时间并找出差异的解决方案。有什么建议吗

不应将数据库中的日期时间保存为字符串。但若您必须这样做,下面是如何将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将实现更大的价值: