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

时间:2010-08-26 04:47:27

标签: c# .net delphi function

Delphi中是否有等价物?我查看了文档,找不到任何可以提供我想要的输出的内容。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

小错误修正 - 权利是:

  

结果:= FormatDateTime('yyyy“ - ”mm“ - ”dd“T”hh“:”nn“:”ss',Value);

(分钟是“nn”,而不是“mm”)