關於時間字串的問題?? |
尚未結案
|
smartboss
初階會員 發表:19 回覆:93 積分:42 註冊:2004-12-29 發送簡訊給我 |
|
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
|
smartboss
初階會員 發表:19 回覆:93 積分:42 註冊:2004-12-29 發送簡訊給我 |
引言: 試試看用 StrToDateTime () 吧 ========================= 大家一起快樂寫程式lu 兄您好:小弟試過這個func 了,它不能轉換 Mon Jan 03 02:30:06 2005 這個字串,它只能轉 date1 = StrToDateTime("2005/10/13"); <--- 這樣的東東,以下是小弟 目前的寫法,可能很笨拙請勿笑偶: AnsiString datemm=(data1.SubString(22,3)).Trim(); if (datemm=="Jan") datemm="01"; if (datemm=="Feb") datemm="02"; if (datemm=="Mar") datemm="03"; if (datemm=="Apr") datemm="04"; if (datemm=="May") datemm="05"; if (datemm=="Jun") datemm="06"; if (datemm=="Jul") datemm="07"; if (datemm=="Aug") datemm="08"; if (datemm=="Sep") datemm="09"; if (datemm=="Oct") datemm="10"; if (datemm=="Nov") datemm="11"; if (datemm=="Dec") datemm="12"; 所以小弟才想請問是否有比較簡潔的辦法,來處理這麼長的判斷? |
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言:引言: 試試看用 StrToDateTime () 吧 ========================= 大家一起快樂寫程式lu 兄您好:小弟試過這個func 了,它不能轉換 Mon Jan 03 02:30:06 2005 這個字串,它只能轉 date1 = StrToDateTime("2005/10/13"); <--- 這樣的東東,以下是小弟 目前的寫法,可能很笨拙請勿笑偶: AnsiString datemm=(data1.SubString(22,3)).Trim(); if (datemm=="Jan") datemm="01"; if (datemm=="Feb") datemm="02"; if (datemm=="Mar") datemm="03"; if (datemm=="Apr") datemm="04"; if (datemm=="May") datemm="05"; if (datemm=="Jun") datemm="06"; if (datemm=="Jul") datemm="07"; if (datemm=="Aug") datemm="08"; if (datemm=="Sep") datemm="09"; if (datemm=="Oct") datemm="10"; if (datemm=="Nov") datemm="11"; if (datemm=="Dec") datemm="12"; 所以小弟才想請問是否有比較簡潔的辦法,來處理這麼長的判斷? >>< face="Verdana, Arial, Helvetica"> 你好, 就在下所知, 好像只有FormatDateTime可以轉TDateTime為Jan 03 02:30:06 2005這種格式的字串, 但反過來就沒有了, 所以只能自己做解析. 而你上述的方法也不失為一種方法, 但是可以用一點小技巧來簡化.// 這個的方法的著眼點就在於每個月份都是3個字, 所以當szMonth.AnsiPos的 // 回傳值為1就是1月, 回傳值為5為2月, 回傳值為9為三月, 類推.... // 所以可以整理上述資訊, 由szMonth.AnsiPos反推回月份, 公式為 // 月份=(回傳值-1)/4 1. void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString szMonth = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"; AnsiString datemm = (data1.SubString(22,3)).Trim(); int iPos = szMonth.AnsiPos(datemm); int iMonth = (iPos - 1)/4 1; ShowMessage(IntToStr(iMonth) "月"); }發表人 - zard 於 2005/01/03 21:00:14 |
smartboss
初階會員 發表:19 回覆:93 積分:42 註冊:2004-12-29 發送簡訊給我 |
引言: 你好, 就在下所知, 好像只有FormatDateTime可以轉TDateTime為Jan 03 02:30:06 2005這種格式的字串, 但反過來就沒有了, 所以只能自己做解析. 而你上述的方法也不失為一種方法, 但是可以用一點小技巧來簡化.Zard 兄您好,這排字串 Jan 03 02:30:06 2005 是由很早以前開發的舊程式發送過來給我的程式處理的,它是由這個func 所產生「char *ctime(const time_t *time);」time_t *time是為格林威治時間,只是有func 轉成字串日期,卻沒有func可以轉成數字日期,讓小弟看著自己寫的那段「機長」的判斷程式有點不是很滿意 < > 呵呵,小弟有試過您的方法了是可以的,謝謝您提供小弟這種技巧。 小小的謝意,請笑納 < > 。// 這個的方法的著眼點就在於每個月份都是3個字, 所以當szMonth.AnsiPos的 // 回傳值為1就是1月, 回傳值為5為2月, 回傳值為9為三月, 類推.... // 所以可以整理上述資訊, 由szMonth.AnsiPos反推回月份, 公式為 // 月份=(回傳值-1)/4 1. void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString szMonth = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"; AnsiString datemm = (data1.SubString(22,3)).Trim(); int iPos = szMonth.AnsiPos(datemm); int iMonth = (iPos - 1)/4 1; ShowMessage(IntToStr(iMonth) "月"); } |
kcin
一般會員 發表:0 回覆:18 積分:3 註冊:2005-01-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |