2008-11-06 1 views
2

Есть простой способ, чтобы преобразовать строку, содержащую это:VB преобразование

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 
+0

Это vb6, vba или vb.net ?? – 2008-11-06 18:49:23

+0

vb.net Visual Basic 2005 – SKapsal 2008-11-06 19:44:52

ответ

6

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

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

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

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

0

Format(date, "yyyyMMdd_HHmmss")

Больше помощи на format функции.

1

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

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

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

0

Как решение @ 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") 

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

1

для чистого раствора 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 или больше.

0
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")