VB конвертация даты - PullRequest
       12

VB конвертация даты

2 голосов
/ 06 ноября 2008

Есть ли простой способ преобразовать строку, которая содержит это:

Date: Wed, 5 Nov 2008 13:12:12 -0500 (EST)

в строку, которая содержит это:

20081105_131212

UPDATE:
В итоге я использовал date.tryparse, который похож на tryParseExact, за исключением того, что вам не нужно указывать строку формата. Я должен был устранить () и EST, чтобы это работало. Строка даты всегда будет EST, поскольку строка даты поступает с 1 веб-сервера.

Исходная строка:

Date: Wed, 5 Nov 2008 13:12:12 -0500 (EST)

Используя этот код:

buff1.Remove(0, 6).Replace("(", "").Replace(")", "").Replace("EST", "").Trim()

Становится этой строкой:

Wed, 5 Nov 2008 13:12:12 -0500

Затем я могу соответствующим образом отформатировать, чтобы сгенерировать дату моего имени файла, используя это:

 If Date.TryParse(buff1, dateValue) Then
   MsgBox(Format(dateValue, "yyyyMMdd_HHmmss"))
 Else
   MsgBox("nope")
 End If

Ответы [ 6 ]

6 голосов
/ 06 ноября 2008

Даже лучше, чем Date.Parse в этом случае будет Date.TryParseExact(). Это позволит вам сообщить платформе, какой формат вы ожидаете, и вернуть логическое значение, а не выдавать исключение в случае сбоя анализа.

Затем используйте .ToString("yyyyMMdd_HHmmss"), чтобы получить желаемый новый формат строки.

Вот ссылка на строку формата, если вам это нужно:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

Наконец, я заметил, что вы игнорируете смещение часового пояса -500. Вы уверены, что все ваши строки действительно из одного часового пояса?

1 голос
/ 06 ноября 2008

Для чистого решения VB я бы пошел

Function ConvertDateString(ByVal Original As String) As String
    Dim Elements As String() = Split(Original, " ")
    Dim DateString As String = Elements(3) & " " & Elements(2) & " " & Elements(4) & " " & Elements(5)
    Return Date.Parse(DateString).ToString("yyyyMMdd_HHmmsss")
End Function

Вы можете исключить DateString, просто используя объединенную строку в Parase. Он поместится на одной строке, если ваше разрешение 1024 на 768 или больше.

1 голос
/ 06 ноября 2008

Если под VB вы имеете в виду VB.NET, вы можете использовать Date.Parse, за которым следует ToString() со строкой формата:

Date.Parse(YourDateString).ToString("yyyyMMdd_HHmmss")

Примечание. Удалите начальную строку «Дата:» перед анализом строки.

0 голосов
/ 26 сентября 2009
Dim strDateVal As String = "Date: Wed, 5 Nov 2008 13:12:12 -0500 (EST)"

strDateVal = strDateVal.Substring(strDateVal.IndexOf(", ") + 2, 
strDateVal.Length - strDateVal.IndexOf(", ") - 2)

strDateVal = strDateVal.Substring(0, strDateVal.LastIndexOf(" ")).TrimEnd

Dim DateVal As Date = Date.Parse(strDateVal)
Dim NewStringVal As String = Format(DateVal, "ddMMyyyy_HHmmss")
0 голосов
/ 06 ноября 2008

Как и решение @ splattne в VB.NET, но также и с очисткой ...

Dim strDateVal As String = "Date: Wed, 5 Nov 2008 13:12:12 -0500 (EST)"
strDateVal = strDateVal.Substring(strDateVal.IndexOf(", ") + 2, strDateVal.Length - strDateVal.IndexOf(", ") - 2)
strDateVal = strDateVal.Substring(0, strDateVal.LastIndexOf(" ")).TrimEnd
Dim DateVal As Date = Date.Parse(strDateVal)
Dim NewStringVal As String = Format(DateVal, "yyyyMMdd_HHmmss")

ПРИМЕЧАНИЕ. При этом игнорируется часовой пояс, чтобы соответствовать ожидаемому результату (в соответствии с данными примера в вопросе)

0 голосов
/ 06 ноября 2008

Format(date, "yyyyMMdd_HHmmss")

Дополнительная справка по функции .

...