diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2008-06-09 23:52:56 +0200 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2008-06-09 23:52:56 +0200 |
| commit | 47735c3d73cc677e519cd33b58232c97729596fa (patch) | |
| tree | 32b96f0388721dd63668cb159d05e6c934536268 /UCoreUtils.pas | |
| parent | f9c7a5f62f96fab9ce5e3d2c205bc9da3046c4d4 (diff) | |
| download | tuxcmd-47735c3d73cc677e519cd33b58232c97729596fa.tar.xz | |
Date/time string formatting revisionv0.6.40
Added ability to set custom date/time format
Diffstat (limited to 'UCoreUtils.pas')
| -rw-r--r-- | UCoreUtils.pas | 87 |
1 files changed, 86 insertions, 1 deletions
diff --git a/UCoreUtils.pas b/UCoreUtils.pas index 31c72b1..3290019 100644 --- a/UCoreUtils.pas +++ b/UCoreUtils.pas @@ -24,7 +24,7 @@ unit UCoreUtils; interface -uses gdk2pixbuf, gtk2, gdk2, glib2, SysUtils, Classes, Libc, GTKControls, GTKStdCtrls, GTKClasses, UEngines; +uses gdk2pixbuf, gtk2, gdk2, glib2, SysUtils, Classes, Libc, UGlibC_compat, GTKControls, GTKStdCtrls, GTKClasses, UEngines; type PIntArray = ^TIntArray; @@ -58,6 +58,7 @@ function GetSignalString(SignalNo: integer): string; function UnixTimeToTDateTime(UnixTime: Int64): TDateTime; function FormatSize(Value: Int64; Base: integer; OverrideSizeFormat: integer = -1): string; +function FormatDate(Value: TTimeT; const FormatTime, FormatDate: boolean; OverrideTimeFormat: integer = -1; OverrideDateFormat: integer = -1; OverrideDateTimeFormat: integer = -1): string; function AttrToStr(const Mode: Cardinal; IncludeFileType: boolean = True): string; function AttrToOctal(const Mode: Cardinal): integer; @@ -269,6 +270,90 @@ begin end; (********************************************************************************************************************************) +function FormatDate(Value: TTimeT; const FormatTime, FormatDate: boolean; OverrideTimeFormat: integer = -1; OverrideDateFormat: integer = -1; OverrideDateTimeFormat: integer = -1): string; +var DateString, TimeString: string; + DateFormat, TimeFormat: string; + df, tf, dtf: integer; + time_tm: Ptm; + Buf: PChar; + placed: integer; +begin + DateString := ''; + TimeString := ''; + DateFormat := ''; + TimeFormat := ''; + Result := ''; + if OverrideDateFormat >= 0 then df := OverrideDateFormat + else df := ConfDateFormat; + if OverrideTimeFormat >= 0 then tf := OverrideTimeFormat + else tf := ConfTimeFormat; + if OverrideDateTimeFormat >= 0 then dtf := OverrideDateTimeFormat + else dtf := ConfDateTimeFormat; + time_tm := localtime(@Value); + + if FormatDate then begin + case df of + 0: DateFormat := '%x'; // System format + 1: DateFormat := '%Y-%m-%d'; // 2008-06-24 + 2: DateFormat := '%Y/%m/%d'; // 2008/06/24 + 3: DateFormat := '%d.%m.%Y'; // 24.06.2008 + 4: DateFormat := '%d.%m.%y'; // 24.06.08 + 5: DateFormat := '%d-%m-%Y'; // 24-06-2008 + 6: DateFormat := '%d/%m/%Y'; // 24/06/2008 + 7: DateFormat := '%m-%d-%Y'; // 06-24-2008 + 8: DateFormat := '%m/%d/%Y'; // 06/24/2008 + 9: DateFormat := '%d-%m-%y'; // 24-06-08 + 10: DateFormat := '%d/%m/%y'; // 24/06/08 + 11: DateFormat := '%m-%d-%y'; // 06-24-08 + 12: DateFormat := '%m/%d/%y'; // 06/24/08 + 13: DateFormat := '%y-%m-%d'; // 08-06-24 + 14: DateFormat := '%y/%m/%d'; // 08/06/24 + else DateFormat := ConfCustomDateFormat; // Custom date format + end; + Buf := malloc(255); + memset(Buf, 0, 255); + placed := strftime(Buf, 254, PChar(DateFormat), time_tm); + if placed <= 0 then DebugMsg(['FormatDate: error converting date. The result will be unpredictable.']); + DateString := String(StrToUTF8(Buf)); + Libc.free(Buf); + end; + + if FormatTime then begin + case tf of + 0: TimeFormat := '%X'; // System format + 1: TimeFormat := '%I:%M %P'; // 01:11 pm + 2: TimeFormat := '%l:%M %P'; // 1:11 pm + 3: TimeFormat := '%I:%M:%S %P'; // 01:11:11 pm + 4: TimeFormat := '%l:%M:%S %P'; // 1:11:11 pm + 5: TimeFormat := '%I:%M %p'; // 01:11 PM + 6: TimeFormat := '%l:%M %p'; // 1:11 PM + 7: TimeFormat := '%I:%M:%S %p'; // 01:11:11 PM + 8: TimeFormat := '%l:%M:%S %p'; // 1:11:11 PM + 9: TimeFormat := '%k:%M'; // 13:11 + 10: TimeFormat := '%k:%M:%S'; // 13:11:11 + 11: TimeFormat := '%H%M'; // 1311 + else TimeFormat := ConfCustomTimeFormat; // Custom Time format + end; + Buf := malloc(255); + memset(Buf, 0, 255); + placed := strftime(Buf, 254, PChar(TimeFormat), time_tm); + if placed <= 0 then DebugMsg(['FormatDate: error converting time. The result will be unpredictable.']); + TimeString := String(StrToUTF8(Buf)); + Libc.free(Buf); + end; + + if FormatDate and FormatTime then begin + case dtf of + 0: Result := Format('%s %s', [DateString, TimeString]); + else Result := Format('%s %s', [TimeString, DateString]); + end; + end else + if FormatTime then Result := TimeString else + if FormatDate then Result := DateString; +end; + + +(********************************************************************************************************************************) function AttrToStr(const Mode: Cardinal; IncludeFileType: boolean = True): string; begin if IncludeFileType then begin |
