2013-08-13 8 views
1

Я использую ASP.NET Visual Basic.Как преобразовать и целое число в datetime

У меня есть целое поле в моей базе данных, которое мне нужно прочитать как дату, например. 20130813. Но на данный момент он говорит, что я не могу конвертировать в datetime.

Есть ли способ разделить целое число на DD, MM, YYYY, чтобы я мог хранить их в переменных, а затем использовать для создания даты. Или простой способ просто перейти на сегодняшний день.

Спасибо за ваше время.

+1

Посмотрите на DateTime.T ryParseExact. – Tim

+0

Возможный дубликат [как преобразовать дату из формата yyyyMMdd в mm-dd-yyyy fomrat] (http://stackoverflow.com/questions/4712335/how-to-convert-date-from-yyyymmdd-format-to-mm -dd-yyyy-fomrat) – CodeCaster

ответ

4

Как вы начинаете с номером, вы можете либо преобразовать его в строку и использовать DateTime.TryParseExact, или использовать немного целочисленной арифметики, чтобы разделить его:

Dim n As Integer = 20130813 
Dim yr As Integer = n \ 10000 
Dim mon As Integer = (n - 10000 * yr) \ 100 
Dim d As Integer = n Mod 100 
Dim dt As New DateTime(yr, mon, d) 
4

Попробуйте это:

Dim provider As CultureInfo = CultureInfo.CurrentCulture 
Dim sData As String = "20130813" 
Dim myDate As Date = Date.ParseExact(sData, "yyyyMMdd", provider) 

Вы можете преобразовать ваш номер строки легко, если это необходимо:

Dim myNum As Integer = 20130813 
sData = myNum.ToString() 

См MSDN Documentation для получения дополнительной информации.

0
Private Sub stringtodate(ByVal dateval As String) 
    Dim yy As String 
    Dim mm As String 
    Dim dd As String 
    Dim newdate As Date 
    yy = dateval.Substring(0, 4) 
    mm = dateval.Substring(4, 2) 
    dd = dateval.Substring(6, 2) 
    newdate =Convert.ToDateTime(dd & "/" & mm & "/" & yy) 
    MsgBox(newdate.ToString()) 
End Sub 
+0

В строке 'newdate = dd &"/"& mm &"/"& yy' вы назначаете String DateTime. Это не будет компилироваться с опцией Strict On. Кроме того, ОП подает целое число, а не строку. –

Смежные вопросы