VB.net 带有时区和偏移量的输出日期时间



我希望在Visual Basics中构造一个如下所示的DateTime

Wed Aug 23 2017 10:00:00 GMT+0530

任何人都可以建议如何构建一个DateTime信息,其中时区信息也可以如上所示?

你可以做如下的事情...

Dim dt as DateTime = DateTime.UtcNow
Dim output as String = dt.ToLocalTime().ToString("MMM dd, yyyy HH:mm:ss tt ""GMT"" zzz")
Console.WriteLine(output) 'Outputs Aug 23, 2017 11:16:29 AM GMT +01:00

有关详细信息,请参阅自定义日期和时间格式字符串。

DateTime 有一个 Kind,它是 DateTimeKind.Local、DateTimeKind.Utc 或 DateTimeKind.Unspecified 之一,因此尽管它有一些时区信息,但它太有限,无法指定另一个偏移量。

日期时间偏移量可以保存其他偏移量,因此它可能更适合您的目的:

Module Module1
Sub Main()
Dim hereAndNow = DateTime.Now
Dim utc = DateTime.UtcNow
Dim noTzi = Date.SpecifyKind(utc, DateTimeKind.Unspecified)
Dim inIndia As New DateTimeOffset(noTzi, TimeSpan.FromHours(5.5))
Console.WriteLine(hereAndNow.ToString("yyyy-MM-dd HH:mm:ss K"))
Console.WriteLine(utc.ToString("yyyy-MM-dd HH:mm:ss K"))
Console.WriteLine(inIndia.ToString("yyyy-MM-dd HH:mm:ss 'GMT' K"))
Console.ReadLine()
End Sub
End Module

输出:

2017-08-23 11:36:55 +01:00 2017-08-23 10:36:55

Z
2017-08-23 10
:36:55 GMT +05:30

我必须将 DateTime 变量的种类utc设置为DateTimeKind.Unspecified才能在 DateTimeOffset 构造函数中使用它。

应使用 K 自定义格式说明符来显示时区信息。

最新更新