我在Visual Basic中编写了一个表单,在一个名为“DigitalTime”的标签中显示当前系统时间(hh:mm:ss)。
现在对于困难部分:如何编写第二个标签(“WordTime”)以使用当前时间(来自“DigitalTime”)并在“WordTime”标签中显示如下:< /强>
示例1 :(时间是22:50)我希望标签“WordTime”显示“10分钟到11”。
示例2 :(时间是13:15)我希望标签“WordTime”显示“15分钟过去1”。
对于0-30分钟,我希望它显示“...分钟过去 ...”。对于31-59分钟,我希望它显示“......分钟到 ...”。
答案 0 :(得分:1)
事实证明,由于.NET中的DateTime和使用String.Format的精彩ToString formatters available,它并不难。 DateTime structure一般都有你需要知道的东西。一个警告和一个问题,从当前DateTime中减去时间我们添加负时间量。 DateTime上没有SubtractMinutes
方法,只有AddMinutes
,因此您添加了负时间。
所有这些都说明如下。理想情况下,你只是让它成为一个功能,但我把它保持得相当基本,所以不会让人感到困惑。
10分钟到11:
Dim _textToMinute As String = String.Empty
If DateTime.Now().Minute > 30 Then
_TextToMinute = "Past"
Else
_textToMinute = "To"
End If
Dim _minutesTillNextHour = (DateTime.Now().AddHours(1).AddMinutes(-DateTime.Now().Minute) - dateTime.Now).Minutes
Dim _nextHour = DateTime.Now().AddHours(1).ToString("%h")
label1.Text = String.Format("{0} minutes {1} {2}", _minutesTillNextHour, _textToMinute, _nextHour)
过去15分钟
label1.Text = String.Format("{0} minutes {1} {2}", DateTime.Now().Minute, _textToMinute, DateTime.Now().ToString("%h"))
答案 1 :(得分:0)
当分钟数为30时,通常的做法是使用“half”一词,如“6点半”。这是一个简单的小函数,它将这一点考虑在内并返回一个格式化的字符串,可以在任何需要的地方分配:
Function TimeInCommonLang(ByVal input As DateTime) As String
Dim minutes As String = ""
Dim indicator As String = ""
If input.Minute <= 30 Then
indicator = "past"
If input.Minute = 30 Then
minutes = "half"
Else
minutes = input.Minute.ToString & " minutes"
End If
Else
indicator = "to"
minutes = (60 - input.Minute).ToString & " minutes"
input = input.AddHours(1)
End If
Return String.Format("{0} {1} {2}", minutes, indicator, input.ToString("%h"))
End Function