Iso8601 日期格式

unit Iso8601Unit;



interface



type

  TIso8601 = class(TObject)

  public

    class function DateTimeFromIso8601(const Value: string): TDateTime; static;

    class function UtcDateTimeToIso8601(const Value: TDateTime): string; static;

    class function DateTimeToIso8601(const Value: TDateTime): string; static;

    class function UtcNow: TDateTime; static;

    class function ToUtc(const Value: TDateTime): TDateTime; static;

    class function FromUtc(const Value: TDateTime): TDateTime; static;

  end;



implementation



uses

  IdGlobalProtocols, {IdGlobal for Index}   SysUtils,

  XSBuiltIns;



class function TIso8601.DateTimeFromIso8601(const Value: string): TDateTime;

begin

  with TXSDateTime.Create() do

  try

    XSToNative(value); // convert from WideString

    Result := AsDateTime; // convert to TDateTime  finally

  finally

    Free();

  end;

end;



class function TIso8601.UtcDateTimeToIso8601(const Value: TDateTime): string;

begin

  with TXSDateTime.Create() do

  try

    AsUTCDateTime := Value;

    Result := NativeToXS; // convert to WideString

  finally

    Free();

  end;

end;



class function TIso8601.DateTimeToIso8601(const Value: TDateTime): string;

begin

  with TXSDateTime.Create() do

  try

    AsDateTime := Value; // convert from TDateTime

    Result := NativeToXS; // convert to WideString

  finally

    Free();

  end;

end;



class function TIso8601.UtcNow: TDateTime;

begin

  Result := ToUtc(Now);

end;



class function TIso8601.ToUtc(const Value: TDateTime): TDateTime;

var

  Bias: TDateTime;

begin

  Bias := TimeZoneBias;

  Result := Value + TimeZoneBias;

end;



class function TIso8601.FromUtc(const Value: TDateTime): TDateTime;

var

  Bias: TDateTime;

begin

  Bias := TimeZoneBias;

  Result := Value - TimeZoneBias;

end;



end.

 

你可能感兴趣的:(日期格式)