線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2446
推到 Plurk!
推到 Facebook!

請問有關DateTime Format 的問題 同BDE Administrator 也有關

尚未結案
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-13 12:32:42 IP:218.103.xxx.xxx 未訂閱
我寫了這個 var TempS : string; TempD : TDateTime; TempS := '30/1/2001 12:00:00' TempD := StrToDateTime(TempS); 在我的電腦run 這一句沒有問題 但我覺得很奇怪 因為 StrToDateTime()中日期的格式應該是 MM/DD/YY HH:MM:SS 所以 temps 應該是有錯出現 但當我用在其他的電腦就有這Econverterror 出現 原因就在 MM/DD/YY HH:MM:SS 跟 DD/MM/YY HH:MM:SS StrToDateTime 應該只接收 MM/DD/YY HH:MM:SS 當MM 大於 12 就會有問題出現 請問有大大知道是什麼地方的問題 我完全沒有方向 另外的是那個 tempS 我是從 Database 裡的table 裡的其中一個 field 而field的type 是 TimeStamp 這樣拿出來的data 都是 DD/MM/YY HH:MM:SS 那怎麼辦? 我用的是 Paradox7.0 BDE administrator 4.0 謝謝
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-13 13:12:24 IP:61.59.xxx.xxx 未訂閱
請參考 http://delphi.ktop.com.tw/topic.php?topic_Id=33538 另外你想要的格式是什麼呢,不是很清楚。
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-13 13:48:49 IP:210.64.xxx.xxx 未訂閱
試試看用'2004/12/12 12:00:00' 去做strtodatetime的處理!! Pillar Wang
------
Pillar Wang
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-13 14:22:44 IP:218.15.xxx.xxx 未訂閱
引言: 我寫了這個 var TempS : string; TempD : TDateTime; TempS := '30/1/2001 12:00:00' TempD := StrToDateTime(TempS); 在我的電腦run 這一句沒有問題 但我覺得很奇怪 因為 StrToDateTime()中日期的格式應該是 MM/DD/YY HH:MM:SS 所以 temps 應該是有錯出現 但當我用在其他的電腦就有這Econverterror 出現 原因就在 MM/DD/YY HH:MM:SS 跟 DD/MM/YY HH:MM:SS StrToDateTime 應該只接收 MM/DD/YY HH:MM:SS 當MM 大於 12 就會有問題出現 請問有大大知道是什麼地方的問題 我完全沒有方向 另外的是那個 tempS 我是從 Database 裡的table 裡的其中一個 field 而field的type 是 TimeStamp 這樣拿出來的data 都是 DD/MM/YY HH:MM:SS 那怎麼辦? 我用的是 Paradox7.0 BDE administrator 4.0 謝謝
您好: 小弟试了下,field的type 是 TimeStamp读出来的值,也不会是那种格式,如需转MM/DD/YY HH:MM:SS格式也行。
procedure TForm1.Button1Click(Sender: TObject);
begin
 with query1 do 
   begin
     close;
     sql.Clear;
     sql.Add('select * from table1');
     open;  
     showmessage(fieldbyname('field1').AsString);  
     Label1.Caption :=(formatdatetime('MM"/"DD"/"YY HH:MM:SS',fieldbyname('field1').value)); 
   end;
end;
其中field1的type 是 TimeStamp;
 
~~~静心养德~~~
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-13 15:47:31 IP:218.103.xxx.xxx 未訂閱
我試過用在 win2000 跟 xp 的電腦上 是這樣的 一個server program , 一個client program server program 會取database 的 data 其中一個是timestamp server program 把data upload 到 client 當client 的os 是 win2000 的時候 那個strtodatetime 要用這('mm/dd/yyyy hh:nn:ss') 當client 的os 是 winxp 的時候 那個strtodatetime 要用這('dd/mm/yyyy hh:nn:ss') 真奇怪
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-13 18:01:09 IP:210.65.xxx.xxx 未訂閱
Hi SamSam1230,    那是因為兩台電腦個日期格式設定不同所導致的,可以在程式中定義格式,如此即可避免此問題
procedure TForm1.Button1Click(Sender: TObject);
var
  Dt : TDatetime;
  FormatSettings : TFormatSettings;
begin
  FormatSettings.ShortDateFormat := ShortDateFormat;
  FormatSettings.LongTimeFormat := LongTimeFormat;
  ShortDateFormat := 'dd/mm/yyyy';
  LongTimeFormat := 'hh:mm:ss';
  Dt := StrToDateTime('31/12/2005 18:59:59');
  ShortDateFormat := FormatSettings.ShortDateFormat;
  LongTimeFormat := FormatSettings.LongTimeFormat;
end;
你可以參考一下關於 ShortDateFormat 的 Help,Default 是抓取 Windows 設定 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-14 09:38:54 IP:218.103.xxx.xxx 未訂閱
請問 Fishman Tformatsettings 是不是 delphi 4.0 沒有的?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-14 10:47:36 IP:210.65.xxx.xxx 未訂閱
Hi SamSam1230,    Sorry !! 手頭上沒有 D4 也沒用過,所以無法回答你的問題  不過剛剛看了一下 class="code"> type TFormatSettings = record CurrencyFormat: Byte; NegCurrFormat: Byte; ThousandSeparator: Char; DecimalSeparator: Char; CurrencyDecimals: Byte; DateSeparator: Char; TimeSeparator: Char; ListSeparator: Char; CurrencyString: string; ShortDateFormat: string; LongDateFormat: string; TimeAMString: string; TimePMString: string; ShortTimeFormat: string; LongTimeFormat: string; ShortMonthNames: array[1..12] of string; LongMonthNames: array[1..12] of string; ShortDayNames: array[1..7] of string; LongDayNames: array[1..7] of string; TwoDigitYearCenturyWindow: Word; end; 改成下列語法試試看行不行的通
procedure TForm1.Button1Click(Sender: TObject);
var
  Dt : TDatetime;
  SDF,LTF : String;
begin
  SDF := ShortDateFormat;
  LTF := LongTimeFormat;
  ShortDateFormat := 'dd/mm/yyyy';
  LongTimeFormat := 'hh:mm:ss';
  Dt := StrToDateTime('31/12/2005 18:59:59');
  ShortDateFormat := SDF;
  LongTimeFormat := LTF;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-14 11:55:29 IP:218.103.xxx.xxx 未訂閱
想請問一下 這樣的話我要怎樣才取得執行電腦的日期format? 只有我知道執行電腦的datetime format 我把我傳的datetime format mapping 到執行的 不就行了嗎?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-14 12:29:50 IP:210.65.xxx.xxx 未訂閱
Hi SamSam1230,    就是上述範例中的 ShortDateFormat --> 簡短日期樣式 LongTimeFormat --> 時間格式    至於前兩篇文章所言“電腦個日期格式設定不同”你可以在『控制台』的『地區選項』中的『日期』、『時間』看到該項設定 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-01-14 14:35:06 IP:218.103.xxx.xxx 未訂閱
不好意思 是說得不夠清楚 我意思是說怎樣在程式裡知道這台電腦日期的格式
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-01-14 15:00:16 IP:218.103.xxx.xxx 未訂閱
謝謝 fishman 我想通了
系統時間:2024-07-02 2:59:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!