Delphi-эквивалент DateTime.ToString .net ("s") (сортируемый DateTime) - PullRequest
1 голос
/ 26 августа 2010

Есть ли эквивалент в Delphi? Я просмотрел документацию и не могу найти ничего, что дало бы мне желаемый результат.

Ответы [ 2 ]

10 голосов
/ 26 августа 2010

kdunlapmo, функция DateTime.ToString («s») возвращает сортируемый шаблон даты / времени;соответствует ISO 8601. этот шаблон объявлен как "yyyy-MM-ddTHH:mm:ss".независимо от культуры, дата должна всегда возвращаться в одном и том же формате.Вы можете использовать функцию FormatDateTime в Delphi для форматирования значения 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 голосов
/ 27 октября 2015

Небольшое исправление - верно:

Результат: = FormatDateTime ('гггг "-" мм "-" дд "Т" чч ":" nn ":" сс ", значение);

(минуты "nn", а не "мм")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...