1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205:
|
unit MyDateUtils;
interface
uses Windows,SysUtils,DateUtils;
type TMyDate=Int64;
const SecsPerHour=SecsPerMin*60;
function MyDateTimeToStr(DateTime:TMyDate;second:boolean=false):String; function MyDateToStr(DateTime:TMyDate):String; function MyTimeToStr(DateTime:TMyDate;second:boolean=false):String; function MyDate():TMyDate; function MyTime():TMyDate; function Jetzt():TMyDate; procedure AddSeconds(var DateTime:TMyDate;ss:Integer=1); procedure AddMinute(var DateTime:TMyDate;mm:Integer=1); procedure AddHour(var DateTime:TMyDate;hh:Integer=1); procedure AddDay(var DateTime:TMyDate;dd:Integer=1); procedure AddMonth(var DateTime:TMyDate;m:Integer=1); procedure AddYear(var DateTime:TMyDate;y:Integer=1); function MyEncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond:Word): TMyDate; function MyMonthsBetween(const ANow, AThen: TMyDate): Integer; function MyDaysBetween(const ANow, AThen: TMyDate): Integer; function MyHoursBetween(const ANow, AThen: TMyDate): Integer; function MyMinutesBetween(const ANow, AThen: TMyDate): Integer; function MySecondsBetween(const ANow, AThen: TMyDate): Integer; function myDayOf(const AValue: TMyDate): Word; function myMonthOf(const AValue: TMyDate): Word; function MyIsValidTime(const AHour, AMinute, ASecond: Word): Boolean; function MyIsValidDate(const AYear, AMonth, ADay: Word): Boolean;
implementation
function MyDateTimeToStr(DateTime:TMyDate;second:boolean=false):String; begin Result:=MyDateToStr(DateTime)+' '+MyTimeToStr(DateTime,second); end;
function MyDateToStr(DateTime:TMyDate):String; begin Result:=FormatDateTime('dd"."mm"."',DateTime div SecsPerDay); end;
function MyTimeToStr(DateTime:TMyDate;second:boolean=false):String; var h,m,s:Integer; begin s:=DateTime mod SecsPerDay; m:=s div 60; s:=s mod 60; h:=m div 60; m:=m mod 60; Result:=Result+Format('%.2d:%.2d',[h,m]); If(second) then Result:=Result+Format(':%.2d',[s]); end;
function MyTime:TMyDate; var SystemTime: TSystemTime; begin GetLocalTime(SystemTime); with SystemTime do Result:=(wHour*60+wMinute)*SecsPerMin+wSecond; end;
function MyDate:TMyDate; begin Result:=Trunc(Date)*SecsPerDay; end;
function Jetzt():TMyDate; begin Result:=MyDate+MyTime; end;
procedure AddSeconds(var DateTime:TMyDate;ss:Integer=1); begin Inc(DateTime,ss); end;
procedure AddMinute(var DateTime:TMyDate;mm:Integer=1); begin Inc(DateTime,mm*SecsPerMin); end;
procedure AddHour(var DateTime:TMyDate;hh:Integer=1); begin Inc(DateTime,hh*SecsPerHour); end;
procedure AddDay(var DateTime:TMyDate;dd:Integer=1); begin Inc(DateTime,dd*SecsPerDay); end;
procedure AddMonth(var DateTime:TMyDate;m:Integer=1); var tmp:TMyDate; begin tmp:=DateTime mod SecsPerDay; DateTime:=Trunc(IncMonth(DateTime div SecsPerDay,m))*SecsPerDay+tmp; end;
procedure AddYear(var DateTime:TMyDate;y:Integer=1); var tmp:TMyDate; begin tmp:=DateTime mod SecsPerDay; DateTime:=Trunc(IncYear(DateTime div SecsPerDay,y))*SecsPerDay+tmp; end;
function MyEncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond:Word): TMyDate; var Date:TDateTime; begin Result:=0; If(not TryEncodeDate(AYear,AMonth,ADay,Date)) then InvalidDateTimeError(AYear, AMonth, ADay, AHour, AMinute, ASecond, 0) else Result:=Trunc(Date)*SecsPerDay+AHour*SecsPerHour+AMinute*SecsPerMin+ASecond; end;
function MyMonthsBetween(const ANow, AThen: TMyDate): Integer; begin Result:=MonthsBetween(ANow div SecsPerDay,AThen div SecsPerDay); end;
function MyDaysBetween(const ANow, AThen: TMyDate): Integer; begin Result:=DaysBetween(ANow div SecsPerDay,AThen div SecsPerDay); end;
function MyHoursBetween(const ANow, AThen: TMyDate): Integer; begin Result:=MySecondsBetween(ANow,AThen) div SecsPerHour; end;
function MyMinutesBetween(const ANow, AThen: TMyDate): Integer; begin Result:=MySecondsBetween(ANow,AThen) div SecsPerMin; end;
function MySecondsBetween(const ANow, AThen: TMyDate): Integer; begin Result:=AThen-ANow; end;
function myDayOf(const AValue: TMyDate): Word; begin Result:=DayOf(AValue div SecsPerDay); end;
function myMonthOf(const AValue: TMyDate): Word; begin Result:=MonthOf(AValue div SecsPerDay); end;
function MyIsValidTime(const AHour, AMinute, ASecond: Word): Boolean; begin Result:=IsValidTime(AHour,AMinute,ASecond,0); end;
function MyIsValidDate(const AYear, AMonth, ADay: Word): Boolean; begin Result:=IsValidDate(AYear,AMonth,ADay); end;
end. |