如何计算两个日期之间的日期 [英] How to calculate day between two dates
问题描述
您好b $ b
我需要在asp.net文本框中的两个日期之间计算。
平均值22.04.2018下午12点到23.04.2018 12.00 pm应计算=一天
请给我建议
Maideen
我的尝试:
如果为True则
Dim dt1 As DateTime = Convert.ToDateTime(Me.txtDateFrom.Text)
Dim dt2 As DateTime = Convert.ToDateTime(Me.txtDateTo.Text)
Dim ts As TimeSpan = dt2.Subtract(dt1)
如果Convert.ToInt32(ts.Days)> = 0那么
Me.txtNoDays.Text = Convert.ToInt32(ts.Days)+ 1
ElseIf dt1 = dt2然后
Me.txtNoDays.Text =无效输入
结束如果
结束如果
从计算中取消+ 1...
但是,不要在用户输入上使用转换操作:始终使用适当的TryParse(或TryParseExact)方法代替。用户总是键入错误的内容,因此您的应用不会因此而崩溃。显示错误消息并给他们更改以修复错误要友好得多!
除了OriginalGriff解决方案#1之外,请检查:
Dim s1 = 22.04.2018 12.00 pm
Dim s2 = 23.04.2018 12.00 pm
Dim ci As Globalization.CultureInfo = Globalization.CultureInfo.InvariantCulture
Dim fmt As 字符串 = dd.MM.yyyy HH.mm tt
Dim dt1 As DateTime = DateTime.Now
Dim dt2 As DateTime = DateTime.Now
尝试
dt1 = DateTime.ParseExact(s1,fmt,ci)
dt2 = DateTime.ParseExact(s2,fmt,ci)
Catch Ex As 异常
Console.WriteLine(Ex.Message)
结束 尝试
Dim dayspasssed As Integer = dt2.Subtract(dt1).Days
Console.WriteLine( '{0}'和'{1}'之间的区别是:{2} day(s),dt2.ToString( yyyy-MM-dd),dt1.ToString( yyyy-MM-dd),dayspassed)
有关详细信息,请参阅:
如何:将字符串转换为DateTime | Microsoft Docs [ ^ ]
DateTime.ParseExact方法(字符串,字符串,IFormatProvider)(系统) [ ^ ]
使用日期和时间执行算术运算Microsoft Docs [ ^ ]
Hi
I need to calculate between two date in asp.net text box.
mean 22.04.2018 12.00 pm to 23.04.2018 12.00 pm should be calculate = one day
Pls advice me
Maideen
What I have tried:
If True Then Dim dt1 As DateTime = Convert.ToDateTime(Me.txtDateFrom.Text) Dim dt2 As DateTime = Convert.ToDateTime(Me.txtDateTo.Text) Dim ts As TimeSpan = dt2.Subtract(dt1) If Convert.ToInt32(ts.Days) >= 0 Then Me.txtNoDays.Text = Convert.ToInt32(ts.Days) + 1 ElseIf dt1 = dt2 Then Me.txtNoDays.Text = "Invalid Input" End If End If
Take off the "+ 1" from the calculation...
But also, don't use Convert operations on user input: always use the appropriate TryParse (or TryParseExact) method instead. Users always type the wrong thing, and your app shouldn't crash as a result. Displaying an error message instead and giving them a change to fix the error is much more friendly!
In addition to solution #1 by OriginalGriff, check this:
Dim s1 = "22.04.2018 12.00 pm" Dim s2 = "23.04.2018 12.00 pm" Dim ci As Globalization.CultureInfo = Globalization.CultureInfo.InvariantCulture Dim fmt As String = "dd.MM.yyyy HH.mm tt" Dim dt1 As DateTime = DateTime.Now Dim dt2 As DateTime = DateTime.Now Try dt1 = DateTime.ParseExact(s1, fmt, ci) dt2 = DateTime.ParseExact(s2, fmt, ci) Catch Ex As Exception Console.WriteLine(Ex.Message) End Try Dim dayspassed As Integer = dt2.Subtract(dt1).Days Console.WriteLine("Difference between '{0}' and '{1}' is: {2} day(s)", dt2.ToString("yyyy-MM-dd"), dt1.ToString("yyyy-MM-dd"), dayspassed)
For further details, please see:
How to: convert strings to DateTime | Microsoft Docs[^]
DateTime.ParseExact Method (String, String, IFormatProvider) (System)[^]
Performing arithmetic operations with dates and times | Microsoft Docs[^]
这篇关于如何计算两个日期之间的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!