2011-12-09 44 views
1

我需要轉換爲具有格式德爾福dateformate MM | DD | YY以MM/DD/YY錯誤

 MM|dd|yy  --- 12|09|11 

我需要將甲酸鹽轉化爲

 MM/dd/yy  --12/09/11 

我的當前日期當前系統日期分隔符是 - '|'

我使用的代碼作爲

var 
    sDateOne : TDate ; 
begin 
    Label1.Caption:=datetostr(now);    {this display as 12|09|11} 
    ShortDateFormat:='MM/dd/yy'; 
    DateSeparator:='/'; 
    sDateOne:=StrToDate(Label1.Caption); 
    FormatDateTime('MM/dd/yy',sDateOne); 
    Label2.Caption:=datetostr(sDateOne);   {this i want as 12/09/11 } 
end; 

,但我得到在線路sDateOne一個錯誤:= StrToDate(Label1.Caption); enter image description here

請告訴我如何轉換日期格式並顯示它?

+0

注意系統區域設置信息可由用戶設置爲使用完全不同的輸出作爲默認的日期˚F ormat你提議。在某些情況下,最好保持用戶的一致性。 – Kromster

回答

4

這裏校正代碼的版本:

var 
    DateOne: TDate; 
    LocalFormatSettings: TFormatSettings; 
begin 
    Label1.Caption := datetostr(now);    {this display as 12|09|11} 
    DateOne := StrToDate(Label1.Caption); 
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, LocalFormatSettings); 
    LocalFormatSettings.DateSeparator := '/'; 
    Label2.Caption := FormatDateTime('MM/dd/yy', DateOne, LocalFormatSettings); {this i want as 12/09/11 } 
end; 

對於GetLocaleFormatSettings信息,請參閱http://delphi.about.com/library/rtl/blrtlGetLocaleFormatSettings.htm

+0

這工作:) 謝謝 但爲什麼你編輯你previuos代碼? 那也適用於我 – PresleyDias

+1

@PresleyDias - 不客氣。以前的版本可以,但更新更安全,更通用。 PS:在Delphi XE2(但不是2007)中,你也可以代替「GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT,LocalFormatSettings);」簡單地寫「LocalFormatSettings:= TFormatSettings.Create;」。 – Pol

+0

還行吧 更多信息派上用場再次感謝:) – PresleyDias

1

如果你正在做的是改變分離器,而不是數字的順序,那麼可以簡單地使用StringReplace(),如:

var 
    S: String; 

S := '12|09|11'; 
S := StringReplace(S, '|', '/', [rfReplaceAll]); 
+1

不錯的把戲;) 但它會導致問題,如果我直接做 'DateOne:= StrToDate(now());'
.... – PresleyDias