在Label中为当地时间添加小时数

时间:2017-09-02 16:42:11

标签: vb.net

这是一个简单的时钟

我的Timer1_Tick获取该代码:

LocalTime.Text = TimeOfDay.ToString("h:mm:ss tt")

如何添加6小时? 谢谢

2 个答案:

答案 0 :(得分:1)

您不应使用标签和文本框来存储数据(在这种情况下是时间)。标签只应用于显示一些信息和文本框以显示和输入信息。将数据存储在变量,字段和属性中。

形式定义此字段
Dim t As Date = Date.Now

方法

t = t.AddHours(6)
LocalTime.Text = t.ToString("h:mm:ss tt")

即。您始终使用存储在字段中的值,然后从中更新标签文本。

由于标签中的时间存储为字符串,因此无法轻松添加小时。您必须将其转换回Date结构,添加小时数,然后将其转换回字符串。

如果要在Timer_Tick中显示多个时钟,可以执行此操作(请注意,VB中的Date只是System.DateTime结构的别名):

Dim local = DateTime.Now
LocalTime.Text = local.ToString("h:mm:ss tt")
AnotherLabel.Text = local.AddHours(6).ToString("h:mm:ss tt")
YetAnotherLabel.Text = local.AddHours(-2).ToString("h:mm:ss tt")

答案 1 :(得分:0)

DateTime.TimeOfDayTimeSpan。因此,您可以使用Hours属性或Add方法更改值。例如:

LocalTime.Text = TimeOfDay.Add(TimeSpan.FromHours(6)).ToString("hh\:mm\:ss")

要减去小时数,请使用Subtract方法而不是Add。此外,使用具有负TimeSpan值的Add方法可以获得相同的结果:

LocalTime.Text = TimeOfDay.Add(TimeSpan.FromHours(-6)).ToString("hh\:mm\:ss")

注意TimeSpan表示时间间隔。设有经过时间的值等于56小时36分12秒。此值的AM / PM标记不是实际的。因此,要获取AM / PM时间格式,您需要使用DateTime结构而不是TimeSpan的值:

NEWYORK.Text = DateTime.Now.Add(TimeSpan.FromHours(6)).ToString("hh:mm tt")

请参阅Choosing between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo文章中的详细信息。