115 lines
5.1 KiB
Plaintext
115 lines
5.1 KiB
Plaintext
unit JclDITs;
|
|
|
|
{$I jcl.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils;
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
// Date and Time Data Interchange (ISO 8601)
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
type
|
|
TISODateTimeOption = (dtoDate, dtoTime, dtoMilliseconds, dtoBasic);
|
|
TISODateTimeOptions = set of TISODateTimeOption;
|
|
TISODateTimeSeparator = (dtsT, dtsSpace);
|
|
TISOFloatDecimalSeparator = (fdsComma, fdsPoint);
|
|
|
|
const
|
|
// basic formats
|
|
ISOBasicDateFormat = 'YYYYMMDD';
|
|
ISOBasicTimeFormat = 'hhnnss';
|
|
// extended formats
|
|
ISODateFormat = 'YYYY"-"MM"-"DD';
|
|
ISOTimeFormat = 'hh":"nn":"ss';
|
|
// milliseconds
|
|
ISOTimeMSec = '","zzz';
|
|
// date time separator
|
|
ISODateTimeSeparatorT = 'T';
|
|
ISODateTimeSeparatorSpace = ' ';
|
|
ISODateTimeSeparators: array [TISODateTimeSeparator] of Char =
|
|
(ISODateTimeSeparatorT, ISODateTimeSeparatorSpace);
|
|
// date time format
|
|
ISOBasicDateTimeFormat = ISOBasicDateFormat + '"' + ISODateTimeSeparatorT + '"' + ISOBasicTimeFormat;
|
|
ISODateTimeFormat = ISODateFormat + ISODateTimeSeparatorT + ISOTimeFormat;
|
|
// float decimal separator
|
|
ISOFloatDecimalSeparatorComma = ',';
|
|
ISOFloatDecimalSeparatorPoint = '.';
|
|
ISOFloatDecimalSeparators: array [TISOFloatDecimalSeparator] of Char =
|
|
(ISOFloatDecimalSeparatorComma, ISOFloatDecimalSeparatorPoint);
|
|
|
|
// Convert TDateTime to string
|
|
function ISODateTimeToStrCustom(const Value: TDateTime;
|
|
Options: TISODateTimeOptions;
|
|
DateTimeSeparator: TISODateTimeSeparator = dtsT): string;
|
|
// Converts TDateTime to date string 'YYYY-MM-DD'
|
|
function ISODateToStr(const Value: TDateTime): string;
|
|
// Converts TDateTime to time string 'hh:mm:ss'
|
|
function ISOTimeToStr(const Value: TDateTime): string;
|
|
// Converts TDateTime to date time string 'YYYY-MM-DDThh:mm:ss'
|
|
function ISODateTimeToStr(const Value: TDateTime): string;
|
|
// Converts TDateTime to date string 'YYYYMMDD'
|
|
function ISOBasicDateToStr(const Value: TDateTime): string;
|
|
// Converts TDateTime to time string 'hhmmss'
|
|
function ISOBasicTimeToStr(const Value: TDateTime): string;
|
|
// Converts TDateTime to date time string 'YYYYMMDDThhmmss'
|
|
function ISOBasicDateTimeToStr(const Value: TDateTime): string;
|
|
// Converts an ISO date string to TDateTime and replaces the date part of Date
|
|
// Valid strings are
|
|
// 'YYYY-MM-DD' and 'YYYYMMDD'
|
|
function TryISOStrToDate(const Value: string; var Date: TDateTime): Boolean;
|
|
// Converts an ISO time string to TDateTime and replace the time part of Time
|
|
// Valid strings are
|
|
// 'hh:mm:ss,zzz', 'hh:mm:ss.zzz', 'hhmmss,zzz', 'hhmmss.zzz',
|
|
// 'hh:mm:ss', 'hhmmss', 'hh:mm' and 'hhmm'
|
|
function TryISOStrToTime(const Value: string; var Time: TDateTime): Boolean;
|
|
// Converts an ISO time stamp to a TDateTime,
|
|
// date and time are separated with 'T' or ' '
|
|
function TryISOStrToDateTime(const Value: string; out DateTime: TDateTime): Boolean;
|
|
// Converts an ISO date string to TDateTime
|
|
// Valid strings:
|
|
// 'YYYY-MM-DD' and 'YYYYMMDD'
|
|
function ISOStrToDate(const Value: string): TDateTime;
|
|
function ISOStrToDateDef(const Value: string; const Default: TDateTime): TDateTime;
|
|
// Converts an ISO time string to TDateTime
|
|
// Valid strings:
|
|
// 'hh:mm:ss,zzz', 'hh:mm:ss.zzz', 'hhmmss,zzz', 'hhmmss.zzz',
|
|
// 'hh:mm:ss', 'hhmmss', 'hh:mm' and 'hhmm'
|
|
function ISOStrToTime(const Value: string): TDateTime;
|
|
function ISOStrToTimeDef(const Value: string; const Default: TDateTime): TDateTime;
|
|
// Converts an ISO time stamp to a TDateTime,
|
|
// date and time are separated with 'T' or ' '
|
|
function ISOStrToDateTime(const Value: string): TDateTime;
|
|
function ISOStrToDateTimeDef(const Value: string; const Default: TDateTime): TDateTime;
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
// Float Data Interchange (ISO 31-0)
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
// Converts a float value to a string
|
|
// DecimalSeparator is decimal separator, no thousand separator
|
|
// Value: the value to convert
|
|
// Precision: precision of the result, 1..18, default: 15 digits
|
|
// DecimalSeparator: used separator
|
|
// if Abs(Value) < 10^-4 or >= 10^15 the function returns a string in the
|
|
// 'Scientific' format
|
|
// if Value is NAN, INF or -INF the function return 'NAN', 'INF' or '-INF'
|
|
function ISOFloatToStr(const Value: Extended;
|
|
Precision: Integer = 15 ;
|
|
DecimalSeparator: TISOFloatDecimalSeparator = fdsComma): string;
|
|
// Converts a string to a float value
|
|
// Decimal separators are ',' or '.'
|
|
// Thousands separator ' '
|
|
// The string can be a number in the 'Scientific' format
|
|
// 'NAN', 'INF', '-INF' are allowed
|
|
function ISOTextToFloat(Value: string; out Float: Extended): Boolean;
|
|
// Converts a string to a float value
|
|
// Decimal separators are ',' or '.'
|
|
// Thousands separator ' ' or ''
|
|
// The string can be a number in the 'Scientific' format
|
|
// 'NAN', 'INF', '-INF' are allowed
|
|
function ISOStrToFloat(const Value: string): Extended;
|
|
function ISOStrToFloatDef(const Value: string; const Default: Extended): Extended;
|