2010-08-26 47 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”)