【问题标题】:Convert CreateGUID from vb6 to vb.net将 CreateGUID 从 vb6 转换为 vb.net
【发布时间】:2021-10-10 13:36:23
【问题描述】:

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

我正在尝试在我的 Footer.ascx.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 吗?谢谢。

【问题讨论】:

  • 你想用你的“字符串”函数做什么?
  • 您好 G3,我没有“字符串”功能。 CreateGUID 函数应返回一个 guid。有关使用上述功能的更多详细信息,请参阅此 microsoft 文档:docs.microsoft.com/en-us/troubleshoot/iis/create-guids-asp
  • 是的,但那是 vb6
  • 你在 NET 中编程
  • 这不是 GUID。这是一个时间戳。

标签: asp.net vb.net webforms


【解决方案1】:

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

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

但这更像是一个时间戳,根本不是真正的 GUID。如果你真的想要一个 GUID:

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

【讨论】:

    【解决方案2】:

    我想我在 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
    

    【讨论】:

    • 让我补充一点:创建 guid 的最佳方法是 Dim g As Guid = Guid.NewGuid() : Debug.WriteLine(g.ToString)
    • 对,与现有的代码、数据和设计相比,整个应用程序现在如何使用非常不同和 VAST 不同的 guid 字符串?
    【解决方案3】:

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

    唯一的变化是字符数 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 个字符长,并包括字母数字 - 一个 VAST 不同的结果,代码操作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 2012-08-03
      • 2023-04-02
      相关资源
      最近更新 更多