Delphi相当于.net的DateTime.ToString("s")(DateTime Sortable)

fos*_*ilz 1 .net c# delphi function

Delphi中有相同的东西吗?我查看了文档,找不到任何可以提供我想要的输出的内容.

RRU*_*RUZ 10

kdunlapmo,DateTime.ToString("s")函数返回一个可排序的日期/时间模式; 符合ISO 8601.此模式声明为"yyyy-MM-ddTHH:mm:ss".无论文化如何,日期必须始终以相同的格式返回.您可以使用delphi中的FormatDateTime函数将TDateTime值格式化为字符串.

你可以使用这样的东西

FormatDateTime('yyyy-mm-dd"T"hh:mm:ss', Now);
Run Code Online (Sandbox Code Playgroud)

但是您必须小心,因为该-字符由DateSeparator值替换,并且该:字符由TimeSeparator值替换,这两个变量都取决于Windows语言环境配置.因此要避免让不同的结果时,文化的变化,你必须使用显式的问题-:您的格式字符串中的字符.

FormatDateTime('yyyy"-"mm"-"dd"T"hh":"mm":"ss', Now)
Run Code Online (Sandbox Code Playgroud)

请参阅此示例代码

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.
Run Code Online (Sandbox Code Playgroud)

此外,您可以编写一个函数将TDatetime值转换为可排序格式,请参阅此示例

function GetSortableDatetimeFormat(Value:TDateTime):string;
begin
  Result:=FormatDateTime('yyyy"-"mm"-"dd"T"hh":"mm":"ss', Value);
end;
Run Code Online (Sandbox Code Playgroud)