如何使用VB.Net在Date.TryParseExact中将军事小时'00'读为'24'?

时间:2015-01-30 06:46:16

标签: vb.net

我需要从文件夹中获取与每个文件名的文件模式和日期格式相匹配的文件列表。日期格式为yyyyMMdd HHmm,因此如果文件模式为' test _',系统必须获取包含文件名的所有文件,例如' test_20150105 2100'。

我使用DateTime.TryParseExact检查日期是否与给定的日期格式匹配。

我的问题是,如果文件名中的小时为' 2400'系统无法获取文件。

以下是我使用的代码,仅适用于那些没有' 2400'小时:

    Dim find As String = "test_"
    Dim last As Char
    Dim length, n As Integer
    Dim value As String
    Dim dformat As String = "yyyyMMdd HHmm"
    Dim extractedDate As String
    Dim ddt As DateTime
    Dim filename As String

    For Each file As String In IO.Directory.GetFiles("C:\Documents and Settings\Admin\My Documents\JGC\shared folder test")

        filename = IO.Path.GetFileNameWithoutExtension(file)

        length = filename.Length

        If filename.Contains(find) Then

            last = find(find.Length - 1)
            n = find.LastIndexOf(last) + 1

            extractedDate = filename.Substring(n, length - find.Length)

            If DateTime.TryParseExact(extractedDate, dformat, Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None, ddt) Then

                value = find & extractedDate

                If filename = value Then

                    ListBox1.Items.Add(IO.Path.GetFileNameWithoutExtension(file))

                End If

            End If

        End If

    Next

提前致谢。

1 个答案:

答案 0 :(得分:0)

只需为" 2400":

添加一个特例
if( extractedDate.EndsWith("2400") ) {
    extractedDate = extractedDate.SubString( 0, extractedDate.Length - 4) + " 2359";
}

if( DateTime.TryParseExact( extractedDate, ...