2015-09-14 80 views
0

我有一個製表符分隔的文本,我提取它的數據,但我發現轉換某些日期的挑戰,因爲它們是在這樣一個不同的格式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 
+0

'Month()'函數只能用於日期類型。數據是否以不同語言本地化?如果不是,可以將包含12個月名稱的文本數組作爲簡單的查找表。這取決於要處理的數據量。 – Seki

+0

我知道月()函數,我想到了陣列的想法,但我只是想,也許有更好的辦法來 –

+0

你試過只使用日期()的方法嗎?這樣你只需要處理異常。根據運行可執行文件的計算機上的Windows設置,格式可能會有所不同。 –

回答

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) 

如果您需要關於其他格式的幫助,請提供它們。

+0

其實我只有這種格式的麻煩其餘太容易thx爲您的幫助 –

+0

如果這個答案幫助你,我將不勝感激,你標記問題已解決,如果你需要更多的幫助,只需編輯您的文章繼續:)。 –

相關問題