0

我必须将字符串(“00:10:08:10”)格式化为(10 周 08 天 10 小时)。所以我使用了一个转换器并将它与数据网格绑定一起添加。我的代码:

  Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
    Dim strList(4) As String
    Dim prefixList() As String = {"Wk", "Dy", "Hrs", "Min"}
    Dim input As String = value.ToString
    Dim Output As String = String.Empty
    If input <> String.Empty Then
        strList = input.Split(":")
        Dim itr As Integer
        For Each Str As String In strList
            If Integer.Parse(Str) <> 0 Then
                Output += Str + " " + prefixList(itr) + " "
            End If
            itr += 1
        Next
    End If
    Return Output
End Function

我正在对其进行转换,但是当我编辑数据时,再次调用转换器,我不会使用旧格式(“00:10:08:10”),而是使用它的(10 Dy 08 Hr 10 Min)。所以转换器显然失败了。我怎样才能让它工作?

附加:mssql 中是否有数据类型以天和小时表示我的数据,这样我就不必使用这种字符串格式。

4

2 回答 2

1

您需要在您的 ValueConverter 中实现 ConvertBack 函数以从 转换10 Dy 08 Hr 10 Min00:10:08:10

假设字符串格式正确,解析和转换应该不会太难。

您可以考虑使用时间跨度来保存数据。它存储时间长度或持续时间。

于 2010-09-13T08:00:17.200 回答
1

关于附加:在 sql 中存储时间时,我总是使用时间戳(自 1970 年 1 月 1 日以来的毫秒数)。它们很容易排序,几乎可以在每种编程语言中解析到 DateTime 对象(或类似对象)。

于 2010-09-13T07:47:14.687 回答