我正在修改一个经典的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个字符长,并且包含字母数字-这是代码操作的一个非常不同的结果。
,这在理论上可能会破坏现有的代码。