全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:957
推到 Plurk!
推到 Facebook!

關於時間字串的問題??

尚未結案
smartboss
初階會員


發表:19
回覆:93
積分:42
註冊:2004-12-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-03 16:59:20 IP:211.76.xxx.xxx 未訂閱
請問lu 兄,或其他站上的前輩們,同樣是時間的問題,如果我收到以下這樣一排字串時,有func可以直接轉成,丫拉伯數字的 TDateTime 時間的嗎?? Mon Jan 03 02:30:06 2005 或者我一定得 一個個去比對 mon 是星期幾 ,jan 是幾月然後自己轉換呢?
lu
高階會員


發表:11
回覆:189
積分:195
註冊:2003-11-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-03 18:01:08 IP:221.169.xxx.xxx 未訂閱
試試看用 StrToDateTime () 吧    ========================= 大家一起快樂寫程式
smartboss
初階會員


發表:19
回覆:93
積分:42
註冊:2004-12-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-03 18:28:30 IP:211.76.xxx.xxx 未訂閱
引言: 試試看用 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-03 20:54:27 IP:61.62.xxx.xxx 未訂閱
引言:
引言: 試試看用 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-04 10:42:28 IP:211.76.xxx.xxx 未訂閱
引言: 你好, 就在下所知, 好像只有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 兄您好,這排字串 Jan 03 02:30:06 2005 是由很早以前開發的舊程式發送過來給我的程式處理的,它是由這個func 所產生「char *ctime(const time_t *time);」time_t *time是為格林威治時間,只是有func 轉成字串日期,卻沒有func可以轉成數字日期,讓小弟看著自己寫的那段「機長」的判斷程式有點不是很滿意 < > 呵呵,小弟有試過您的方法了是可以的,謝謝您提供小弟這種技巧。 小小的謝意,請笑納 < > 。
kcin
一般會員


發表:0
回覆:18
積分:3
註冊:2005-01-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-22 01:04:07 IP:220.130.xxx.xxx 未訂閱
COleDateTime::ParseDateTime BOOL ParseDateTime( LPCTSTR lpszDate, DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT ); throw( CMemoryException ); throw( COleException ); 請參考MSDN
系統時間:2024-05-19 19:22:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!