Как извлечь месяц из строковой даты?

У меня есть текст с разделителями табуляции, который я извлекаю из него данные, но я столкнулся с проблемой при преобразовании некоторых дат, потому что они имеют другой формат, как этот 1 AUG 1989 Я беру данные в виде строки и перебираю их, чтобы разложить и построить с ними действительную дату. Вот мой код для даты, разделенной пробелом (" "). Спасибо за вашу помощь.

//Extract the day 
ll_strtsearch = 1 
ll_fsearch = Pos(ls_tmp ," " , ll_strtsearch)
ll_len = ll_fsearch - ll_strtsearch 
ls_tmpdate = Trim(Mid(ls_tmp , ll_strtsearch , ll_len )) 
ll_day = Long(ls_tmpdate)

//Extract the Month
ll_strtsearch = ll_fsearch + 1 
ll_fsearch = Pos(ls_tmp , " " , ll_strtsearch)
ll_len = ll_fsearch - ll_strtsearch
ls_tmpdate = Trim(Mid(ls_tmp , ll_strtsearch , ll_len)) 
ll_month = Month(ld_tmp)
//ll_month = Long(ls_tmpdate) 


//Extract the Year 
ll_strtsearch = ll_fsearch + 1 
ll_len = 4
setNull(ld_empDob)
ls_tmpdate = Trim(Mid(ls_tmp , ll_strtsearch , ll_len)) 
if len(ls_tmpdate) = 4 Then
    ll_year = Long(ls_tmpdate)
Else 
    If len(ls_tmpdate) = 2 Then 
        ls_tmpdate = "19" + ls_tmpdate 
        ld_empDob = Date(Long(ls_tmp) , 1 ,1 )
    End If 

1 ответ

Решение

Для текущего предоставленного формата вы можете использовать это:

long ll_day,ll_month,ll_year

ls_tmp = '1 AUG 1989' // d mmm yyyy 
ll_day = Day(date(ls_tmp))
ll_month = Month(date(ls_tmp))
ll_year = Year(date(ls_tmp))

и если вы хотите продолжать использовать свой код, измените это в случае месяца:

//Extract the Month
ll_strtsearch = ll_fsearch + 1 
ll_fsearch = Pos(ls_tmp , " " , ll_strtsearch)
ll_len = ll_fsearch - ll_strtsearch
ls_tmpdate = Trim(Mid(ls_tmp , ll_strtsearch , ll_len)) 
ll_month = Month(date(ls_tmp))
//ll_month = Long(ls_tmpdate) 

Если вам нужна помощь по поводу других форматов, вам необходимо предоставить их.

Другие вопросы по тегам