【问题标题】:Trouble with Time Formating in Asp.NetAsp.Net 中的时间格式化问题
【发布时间】:2018-02-13 11:00:42
【问题描述】:

我正在开发一个 Web 应用程序,它是从以前基于 Visual Basic 6 的桌面版本的过渡。我必须在支持票证系统中显示票证首次到达、首次处理等时间。

我在时间格式化时遇到了某些问题,因为我似乎必须根据输入使用几种不同的方法来获得我想要的东西,现在我对何时应该使用每种方法感到困惑。

例如,当使用系统 DateNow 以小时、分钟和秒为单位获取答案时,这可以正常工作:

Strings.Format(Date.Now, "HH:mm:ss")

但是我在数据库中有字符串值,它们以某种方式存储,我无法修改数据库以具有我更愿意存储它的时间戳字段,时间、分钟和秒被挤在一起,如其中 13h,57mins,20secs 以字符串“135720”结尾。如果我尝试同样的方法

Dim info as string="135720"
Strings.Format(val(info),"HH:mm:ss)

我得到的答案是实际的格式“HH:mm:ss”,而不是我预期的 13:57:20。 但如果我在 .net 中使用转换后的 VB6 函数:

Microsoft.VisualBasic.Format(Val(Info), "##:##:##")

它工作得很好。 我还必须使用 Microsoft.VisualBasic.Format 尝试修复错误存储的字符串,例如“1357”或仅“135”将其转换为“13:57:00”或“13:50:00”使用基于字符串长度的大小写选择。

但我真的不想在应该是更新的应用程序中使用旧的编程语言,因为我最终不了解新的工作原理,并且我已经广泛研究了文档,但没有更聪明。

我确实在社区内查看过,但在以下问题中也没有真正找到答案: Is there a way to programmatically convert VB6 Formatting strings to .NET Formatting strings?

A regular expression to validate .NET time format

Time format of datetime field in .net

Time format in asp.net page

任何帮助找到我应该这样做的新方法以及为什么会非常感激。

谢谢

【问题讨论】:

    标签: asp.net .net vb.net


    【解决方案1】:

    您可以使用 TimeSpan。

    此函数将从您的字符串值返回一个 TimeSpan。

    Public Function GetTimeSpan(s As String)
        Dim span As TimeSpan
        s = s.Trim  'Trim spaces
    
        'Check if string only contains numbers and if length is valid, else throw exception
        If System.Text.RegularExpressions.Regex.IsMatch(s, "^[0-9]+$") AndAlso
           s.Length >= 3 AndAlso
           s.Length <= 6 Then
    
            s = s.PadRight(6, "0")
        Else
            Throw New Exception("Invalid String!")
        End If
    
        TimeSpan.TryParseExact(s, "hhmmss", Globalization.CultureInfo.InvariantCulture, span)
    
        Return span
    End Function
    

    并像这样使用它:

    MessageBox.Show(GetTimeSpan("135700").ToString)
    MessageBox.Show(GetTimeSpan("135").ToString)
    

    【讨论】:

    • 完美,Timespan 的世界将解决许多悬而未决的问题。非常感谢,这正是我想要的。只是对其他使用它的人的建议,修剪你的传入字符串以躲避意外的长度结果:)
    • 添加了 Trim 和正则表达式检查数字。
    • 再一次像这样更有用,我一直在使用 instr() 和 .replace 函数,它们远不如正则表达式有效。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 2013-03-03
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多