2011-02-16 61 views

回答

3

當您撥打StrToFloatFloatToStr時,可以使用TFormatSettings記錄指定小數點分隔符。你必須決定使用什麼,並堅持。這是一個帶.

var 
    d: TDateTime; 
    s: string; 
    fs: TFormatSettings; 
begin 
    d := Now(); 
    fs.DecimalSeparator := '.'; 
    s := FloatToStr(d, fs); 
end; 

另一種選擇是使用XML標準日期時間格式示例代碼。德爾福在XSBuiltIns中有一些功能來做TDateTimestring之間的轉換。您將在該值中包含時區偏移量,因此如果將持久TDateTime從一個時區移至另一個時區,則可能會出現一些不需要的行爲。這取決於值的用法。

var 
    d: TDateTime; 
    s: string; 
begin 
    d := Now(); 
    s := DateTimeToXMLTime(d); 
    d := XMLTimeToDateTime(s); 
end; 
+0

第一個片段完美運作!謝謝! – Jeff 2011-02-16 15:22:23

1

正如Mikael所說,有很多方法可以做到這一點。要重新設置,您希望以文本格式將TDateTime存儲到文件中,並且無論發生恢復的區域設置如何,都能夠成功恢復此值。

選項1

存放時,請撥打FloatToStr,比方說,但力 ''通過TFormatSettings參數進行小數點分隔。恢復時,使用StrToFloatTFormatSettings相同。

選項2

編碼使用基64。這具有的優點是使該值不可讀下行8字節TDateTime值。

選項3

選項1類似,但編碼TDateTime通過調用DateTimeToStr和明確地傳遞一個TFormatSettings,不依賴於任何的語言環境 - 所以不要依賴於區域設置的日期或時間分隔符,而是強迫你自己。用相同的TFormatSettings記錄反向呼叫StrToDateTime