【问题标题】:VB Elapsed time method confusionVB经过时间方法混淆
【发布时间】:2015-02-11 14:13:36
【问题描述】:

我必须编写一个程序,当我将 2 次输入到 2 个文本框时,它会找到经过的时间,一个文本框将是开始时间,另一个文本框将是结束时间,我不知道我是如何做到这一点的.

示例
开始时间是 12:45
结束时间是 13:15
那么经过的时间应该是30分钟


Public Class Form1 

    Dim starttime As DateTime 
    Dim endtime As DateTime 
    Dim timetaken As TimeSpan 
    Private Sub btnOK_Click(sender As Object, 
        e As EventArgs) Handles btnOK.Click 
        starttime = txtStart.Text 
        endtime = txtEnd.Text 
    End Sub 

End Class

【问题讨论】:

  • 如果没有您的代码,我们不可能告诉您您的代码有什么问题
  • 我还没有太多代码,我试图弄清楚如何实际做到这一点 Public Class Form1 Dim starttime As DateTime Dim endtime As DateTime Dim timetaken As TimeSpan Private Sub btnOK_Click(sender As Object, e As EventArgs) 处理 btnOK.Click starttime = txtStart.Text endtime = txtEnd.Text End Sub End Class 这就是我到目前为止所得到的,我不知道从这里去哪里
  • 首先使用Option Strict On(总是)。如果starttimeDateTime 类型,您不能简单地为它分配一个字符串(txtBox.Text)并让它神奇地转换为DateTime
  • 好的,我试试这个,希望最好

标签: vb.net time elapsed


【解决方案1】:

迅速从我的脑海中消失:

Option Strict On 'every good programmer does this

Public Class Form1 

    Private starttime As DateTime 'Please use Dim only in functions or subs
    Private endtime As DateTime 
    Private timetaken As TimeSpan 

    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click 
        starttime = DateTime.Parse(txtStart.Text) 'Parse the string input
        endtime = DateTime.Parse(txtEnd.Text)
        timetaken = endtime - starttime
    End Sub 

End Class

当然,这在很大程度上取决于可以将什么字符串解析为DateTime 实例。它甚至取决于您的系统文化。查看https://msdn.microsoft.com/en-us/library/System.DateTime.Parse(v=vs.110).aspx 以获取有关输入字符串外观的更多详细信息。如果几天就足够了,您可以改用 DatePicker 控件(但遗憾的是,它不支持您对时间的需求)。

您可以使用DateTime.ParseExact afaik 提供输入字符串的格式

要在无法解析文本框中输入的字符串时捕获错误,请使用DateTime.TryParse

【讨论】:

  • 那么我如何让它显示在消息框中?执行 msgbox(timetaken) 时出现错误
  • MessageBox 需要一个字符串,使用.ToString(),您可以在任何对象上调用它,因为它是object 类的一个方法,每个.NET 对象都从该类继承。好的类会覆盖它,然后给你一个有用的字符串(虽然不是全部,然后只返回类型名称,直接在object 中实现)。
【解决方案2】:

首先,使用Dateime.ParseDateTime.ParseExact将文本框中的string转换为DateTimes,

Dim start = DateTime.Parse(txtStart.Text)

然后您可以使用返回TimeSpanSubtract 方法找到两个DateTimes 之间的区别。

Dim difference = end.Subtract(start)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    相关资源
    最近更新 更多