将CreateGUID从vb6转换为vb.net



我正在修改一个经典的asp.net webforms项目。

我试图在我的footer . asx .vb中使用这个vb6函数:

函数如下:

Function CreateGUID()
Dim tmpTemp
tmpTemp = Right(String(4, 48) & Year(Now()), 4)
tmpTemp = tmpTemp & Right(String(4, 48) & Month(Now()), 2)
tmpTemp = tmpTemp & Right(String(4, 48) & Day(Now()), 2)
tmpTemp = tmpTemp & Right(String(4, 48) & Hour(Now()), 2)
tmpTemp = tmpTemp & Right(String(4, 48) & Minute(Now()), 2)
tmpTemp = tmpTemp & Right(String(4, 48) & Second(Now()), 2)
CreateGUID = tmpTemp
End Function

有人知道如何将其转换为vb.net吗?谢谢你。

如果你真的想模仿原来的行为:

Function CreateGUID() As String
Return Now().ToString("yyyyMMddHHmmss")
End Function

但这更像是一个时间戳,而不是一个GUID。如果你想要一个GUID:

Function CreateGUID() As String
Return Guid.NewGuid().ToString()
End Function

我想我在G3的帮助下得到了答案:

Function CreateGUID()
Dim tmpTemp
tmpTemp = Right(New String("4"c, 48) & Year(Now()), 4)
tmpTemp = tmpTemp & Right(New String("4"c, 48) & Month(Now()), 2)
tmpTemp = tmpTemp & Right(New String("4"c, 48) & Day(Now()), 2)
tmpTemp = tmpTemp & Right(New String("4"c, 48) & Hour(Now()), 2)
tmpTemp = tmpTemp & Right(New String("4"c, 48) & Minute(Now()), 2)
tmpTemp = tmpTemp & Right(New String("4"c, 48) & Second(Now()), 2)
CreateGUID = tmpTemp
End Function

如果我错过了什么,请告诉我。

根据G3下面的评论更新和改进的建议:

Function CreateGUID() As String
Dim guid As Guid = Guid.NewGuid()
CreateGUID = guid.ToString()
End Function

好吧,如果你想要相同的代码,那么你真的不必改变它。

唯一的变化是字符数4 (ctrl-d)。这就变成了这样:

Function CreateGUID()
Dim tmpTemp As String
Dim s As String = New String(Chr(48), 4)
tmpTemp = Right(s & Year(Now()), 4)
tmpTemp = tmpTemp & Right(s & Month(Now()), 2)
tmpTemp = tmpTemp & Right(s & Day(Now()), 2)
tmpTemp = tmpTemp & Right(s & Hour(Now()), 2)
tmpTemp = tmpTemp & Right(s & Minute(Now()), 2)
tmpTemp = tmpTemp & Right(s & Second(Now()), 2)
CreateGUID = tmpTemp
End Function

所以,VBA/VB6的字符串的参数是翻转的-其他一切都将工作相同。

正如其他人指出的那样——你可以使用内置命令——但它的格式会有所不同,并且会包含"-"(其中4个),并且还将包括alpha字符a-f。

原始字符串只有0-9,长度为14个字符。

如果您使用vb.net guid,那么它将是36个字符长,并且包含字母数字-这是代码操作的一个非常不同的结果。

,这在理论上可能会破坏现有的代码。

最新更新