2010-08-26 41 views

回答

10

kdunlapmo,DateTime.ToString(「s」)函數返回一個可排序的日期/時間模式;符合ISO 8601.這種模式被聲明爲"yyyy-MM-ddTHH:mm:ss"。不管文化如何,日期必須始終以相同的格式返回。您可以使用delphi中的FormatDateTime函數將TDateTime值格式化爲字符串。

你可以使用這樣的事情

FormatDateTime('yyyy-mm-dd"T"hh:mm:ss', Now); 

但由於-字符由DateSeparator值取代和:字符由TimeSeparator值取代你一定要小心,這兩個變量都依賴於Windows的語言環境配置。所以爲了避免在文化更改時得到不同結果的問題,您必須在格式字符串中使用明確的-:字符。

FormatDateTime('yyyy"-"mm"-"dd"T"hh":"mm":"ss', Now) 

看到此示例代碼

program ProjectTestFormat; 

{$APPTYPE CONSOLE} 

uses 
    SysUtils; 

begin 
    try   
    DateSeparator:='/'; 
    TimeSeparator:='.'; 
    //this string is affected by the windows locale configuration 
    Writeln(FormatDateTime('yyyy-mm-dd"T"hh:mm:ss', Now)); 
    //this string is not affected 
    Writeln(FormatDateTime('yyyy"-"mm"-"dd"T"hh":"mm":"ss', Now)); 
    Readln; 
    except 
    on E:Exception do 
     Writeln(E.Classname, ': ', E.Message); 
    end; 
end. 

此外,您可以編寫一個函數來的TDateTime類型值轉換爲可排序格式,請參見本樣本

function GetSortableDatetimeFormat(Value:TDateTime):string; 
begin 
    Result:=FormatDateTime('yyyy"-"mm"-"dd"T"hh":"mm":"ss', Value); 
end; 
+0

優秀答案謝謝! – kirkdmo 2010-08-26 12:22:44

+0

確實,輝煌的答案。 – 2010-08-26 16:25:28

0

小bug修復 - 正確的是:

結果:= FormatDateTime('yyy y「 - 」mm「 - 」dd「T」hh「:」nn「:」ss',Value);

(分鐘爲「NN」,而不是「MM」)