工作时间跨度但需要分钟00:20:00(HH:mm:ss)

问题描述 投票:0回答:1

使用两个按钮来启动和停止每个按钮

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 in使用它的格式。

干杯,皮特

vb.net
1个回答
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类型)并查看会发生什么。

创建一个新的TimeSpan20分钟,并从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将是个好主意。 在声明和使用您的类型时,这将有助于做出正确的决定。

© www.soinside.com 2019 - 2024. All rights reserved.