计算出时间跨度,但需要分钟00:20:00(HH:mm:ss)

时间:2018-11-19 11:15:05

标签: vb.net

使用两个按钮使用

分别启动和停止
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,以使用此格式。

干杯, 皮特

1 个答案:

答案 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。在项目属性中。
这将有助于在声明和使用类型时做出正确的决定。