使用两个按钮使用
分别启动和停止start_time = Format(Date.Now, "HH:mm:ss")
或
stop_time = Format(Date.Now, "HH:mm:ss")
用于存储时间,并且在提交时使用时间跨度来计算时间差
Dim duration As TimeSpan = stop_time - start_time
假设我录制了00:59:00分钟,我怎么会减去00:20:00?我想这是持续时间为00:20:00的另一个时间跨度,但不确定如何获取00:20 :00,以使用此格式。
干杯, 皮特
答案 0 :(得分:0)
截至目前,您正在使用字符串存储DateTime
值。没有理由。
在处理DateTime结构时,应使用字符串-仅用于表示。
使用TimeSpan执行这些计算。
存储操作的开始时间:
Dim StartTime As TimeSpan = Date.Now.TimeOfDay
存储操作的结束时间:
Dim StopTime As TimeSpan = Date.Now.TimeOfDay
计算持续时间:
Dim Duration As TimeSpan = StopTime - StartTime
可以使用以下方法创建TimeSpan
值:
[TimeSpan] = new TimeSpan([Hours], [Minutes], [Seconds])
或:
[TimeSpan] = TimeSpan.FromSeconds([Seconds]) | TimeSpan.FromMinutes([Minutes]) | .FromHours([Hours])
等。
请注意,第一种形式接受Integer
值,而第二种形式接受Double
值:以分钟为单位插入值时,在值中添加#
(指示值是Double
类型),然后看看会发生什么。
在TimeSpan
分钟内创建一个新的20
,然后从Duration
值中减去:
Dim SubSpan As TimeSpan = New TimeSpan(0, 20, 0)
'Or
Dim SubSpan As TimeSpan = TimeSpan.FromMinutes(20.0#)
Duration -= SubSpan
使用TimeSpan.ToString()
方法以易于理解的本地化形式显示DateTime
/ TimeSpan
值:
TextBox1.Text = Duration.ToString()
或使用特定格式:
TextBox1.Text = duration.ToString("hh\:mm\:ss")
TextBox1.Text = duration.ToString("hh\:mm\:ss", CultureInfo.InvariantCulture)
TextBox1.Text = duration.ToString("hh\:mm\:ss", CultureInfo.CreateSpecificCulture("en-UK"))
如评论中所述(以及每天其他许多问题), 设置
Option Strict On
,可能设置Option Explicit On
的好主意 和(它确实很有用)Option Infer On
。在项目属性中。
这将有助于在声明和使用类型时做出正确的决定。