请问计算开始时间和结束时间之间的间隔
请教计算开始时间和结束时间之间的间隔!
各位坛友,
我现在想计算出一个时间的间隔,初始时间、结束时间都在00:00-23:59的范围,
得到的时间间隔的格式也为:XX:XX
----------
要得到的效果如下:
开始时间是22:00
结束时间是03:00
时间间隔则应为:(03:00+23:59)-22:00=04:59
===
现在我这样子做:
string st1 = "23:00";//开始时间
string st2 = "23:43";//结束时间
DateTime dt1 = Convert.ToDateTime(st1);
DateTime dt2 = Convert.ToDateTime(st2);
TimeSpan ts1 = new TimeSpan(dt1.Ticks);
TimeSpan ts2 = new TimeSpan(dt2.Ticks);
TimeSpan ts = ts2.Subtract(ts1).Duration();
//格式化在00:00-23:59的范围
string output = String.Format("{0:00}:{1:00}", ts.TotalHours, ts.Minutes);
MessageBox.Show(output);
========
但是,结果却输出了01:43,
为啥会多了一个01??不是应该的00:43吗??
----------------------
谢谢各位!
------解决方案--------------------
各位坛友,
我现在想计算出一个时间的间隔,初始时间、结束时间都在00:00-23:59的范围,
得到的时间间隔的格式也为:XX:XX
----------
要得到的效果如下:
开始时间是22:00
结束时间是03:00
时间间隔则应为:(03:00+23:59)-22:00=04:59
===
现在我这样子做:
string st1 = "23:00";//开始时间
string st2 = "23:43";//结束时间
DateTime dt1 = Convert.ToDateTime(st1);
DateTime dt2 = Convert.ToDateTime(st2);
TimeSpan ts1 = new TimeSpan(dt1.Ticks);
TimeSpan ts2 = new TimeSpan(dt2.Ticks);
TimeSpan ts = ts2.Subtract(ts1).Duration();
//格式化在00:00-23:59的范围
string output = String.Format("{0:00}:{1:00}", ts.TotalHours, ts.Minutes);
MessageBox.Show(output);
========
但是,结果却输出了01:43,
为啥会多了一个01??不是应该的00:43吗??
----------------------
谢谢各位!
计算时间间隔
------解决方案--------------------
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Label1.Text = (String.Format("{1}到{2} : {3}{0}{4}到{5} : {6}{0}{7}到{8} : {9}{0}{10}到{11} : {12}", vbCrLf,
"00:01", "00:34", Demo("00:01", "00:34"),
"01:01", "00:34", Demo("01:01", "00:34"),
"00:34", "00:33", Demo("00:34", "00:33"),
"11:34", "00:33", Demo("11:34", "00:33")
))
End Sub
Private Function Demo(time1 As String, time2 As String) As String
Dim m1 As Match = Regex.Match(time1, "(?<hour>[\d]{1,2})\:(?<minute>[\d]{1,2})", RegexOptions.IgnoreCase Or RegexOptions.ExplicitCapture)
If m1.Success Then
Dim hour1, minute1 As Integer
hour1 = Integer.Parse(m1.Groups("hour").Value)
minute1 = Integer.Parse(m1.Groups("minute").Value)
m1 = Regex.Match(time2, "(?<hour>[\d]{1,2})\:(?<minute>[\d]{1,2})", RegexOptions.IgnoreCase Or RegexOptions.ExplicitCapture)
If m1.Success Then