Dim tmpDate As DateTime = New DateTime(Now.Ticks, DateTimeKind.Utc)Dim res as String = tmpDate.toString("o") '2009-06-15T13:45:30.0000000Z
原因如下:
ISO 8601有一些不同的格式:
日期类型
2009-06-15T13:45:30.0000000-07:00
Utc时间类型
2009-06-15T13:45:30.0000000Z
日期时间类型。未指定
2009-06-15T13:45:30.0000000
. NET为我们提供了一个包含以下选项的枚举:
'2009-06-15T13:45:30.0000000-07:00Dim strTmp1 As String = New DateTime(Now.Ticks, DateTimeKind.Local).ToString("o")
'2009-06-15T13:45:30.0000000ZDim strTmp2 As String = New DateTime(Now.Ticks, DateTimeKind.Utc).ToString("o")
'2009-06-15T13:45:30.0000000Dim strTmp3 As String = New DateTime(Now.Ticks, DateTimeKind.Unspecified).ToString("o")
说明:如果您将Visual Studio 2008“watch实用程序”应用于toString("o")对象类型部分,您可能会得到不同的结果,我不知道它是否是bug,但在这种情况下,如果您正在调试,使用String变量会有更好的结果。
# Using PowerShell Core to demo
# Lowercase "u" format[System.DateTime]::UtcNow.ToString("u")> 2020-02-06 01:00:32Z
# Lowercase "u" format with replacement[System.DateTime]::UtcNow.ToString("u").Replace(' ','T')> 2020-02-06T01:00:32Z