public object JulDateGetIntervall(Enums.TiJulDateIntervall vnumIntervall, decimal vcurJulDate1, decimal vcurJulDate2) { if (!IsJulDate(vcurJulDate1)) { Information.Err().Raise(50000, "UtilTime", "Das erste Datum ist ungültig."); } else { if (IsJulDate(vcurJulDate2)) { JULDATE_LONG dtypJulDateLng1 = InternGetJulSplit(vcurJulDate1); JULDATE_LONG dtypJulDateLng2 = InternGetJulSplit(vcurJulDate2); int dlngTime1 = dtypJulDateLng1.jdTime; int dlngTime2 = dtypJulDateLng2.jdTime; object dvarVarDat1 = default(object); object dvarVarDat2 = default(object); switch (vnumIntervall) { case Enums.TiJulDateIntervall.tiDays: dvarVarDat1 = new decimal(dtypJulDateLng1.jdDays); dvarVarDat2 = new decimal(dtypJulDateLng2.jdDays); break; case Enums.TiJulDateIntervall.tiHours: dvarVarDat1 = decimal.Add(decimal.Multiply(new decimal(dtypJulDateLng1.jdDays), new decimal(24L)), new decimal(InternTimeToHours(dlngTime1))); dvarVarDat2 = decimal.Add(decimal.Multiply(new decimal(dtypJulDateLng2.jdDays), new decimal(24L)), new decimal(InternTimeToHours(dlngTime2))); break; case Enums.TiJulDateIntervall.tiMinutes: dvarVarDat1 = decimal.Add(decimal.Add(decimal.Multiply(new decimal(dtypJulDateLng1.jdDays), new decimal(1440L)), decimal.Multiply(new decimal(InternTimeToHours(dlngTime1)), new decimal(60L))), new decimal(InternTimeToMinutes(dlngTime1))); dvarVarDat2 = decimal.Add(decimal.Add(decimal.Multiply(new decimal(dtypJulDateLng2.jdDays), new decimal(1440L)), decimal.Multiply(new decimal(InternTimeToHours(dlngTime2)), new decimal(60L))), new decimal(InternTimeToMinutes(dlngTime2))); break; case Enums.TiJulDateIntervall.tiSeconds: dvarVarDat1 = decimal.Add(decimal.Add(decimal.Add(decimal.Multiply(new decimal(dtypJulDateLng1.jdDays), new decimal(86400L)), decimal.Multiply(new decimal(InternTimeToHours(dlngTime1)), new decimal(3600L))), decimal.Multiply(new decimal(InternTimeToMinutes(dlngTime1)), new decimal(60L))), new decimal(InternTimeToSeconds(dlngTime1))); dvarVarDat2 = decimal.Add(decimal.Add(decimal.Add(decimal.Multiply(new decimal(dtypJulDateLng2.jdDays), new decimal(86400L)), decimal.Multiply(new decimal(InternTimeToHours(dlngTime2)), new decimal(3600L))), decimal.Multiply(new decimal(InternTimeToMinutes(dlngTime2)), new decimal(60L))), new decimal(InternTimeToSeconds(dlngTime2))); break; case Enums.TiJulDateIntervall.tiMilliSecs: dvarVarDat1 = decimal.Add(decimal.Add(decimal.Add(decimal.Add(decimal.Multiply(new decimal(dtypJulDateLng1.jdDays), new decimal(86400000L)), decimal.Multiply(new decimal(InternTimeToHours(dlngTime1)), new decimal(3600000L))), decimal.Multiply(new decimal(InternTimeToMinutes(dlngTime1)), new decimal(60000L))), decimal.Multiply(new decimal(InternTimeToSeconds(dlngTime1)), new decimal(1000L))), new decimal(InternTimeToMilliSecs(dlngTime1))); dvarVarDat2 = decimal.Add(decimal.Add(decimal.Add(decimal.Add(decimal.Multiply(new decimal(dtypJulDateLng2.jdDays), new decimal(86400000L)), decimal.Multiply(new decimal(InternTimeToHours(dlngTime2)), new decimal(3600000L))), decimal.Multiply(new decimal(InternTimeToMinutes(dlngTime2)), new decimal(60000L))), decimal.Multiply(new decimal(InternTimeToSeconds(dlngTime2)), new decimal(1000L))), new decimal(InternTimeToMilliSecs(dlngTime2))); break; } return(Conversions.ToDecimal(Operators.SubtractObject(dvarVarDat2, dvarVarDat1))); } Information.Err().Raise(50000, "UtilTime", "Das zweite Datum ist ungültig."); } object JulDateGetIntervall = default(object); return(JulDateGetIntervall); }
public decimal JulDateAddIntervall(Enums.TiJulDateIntervall vnumIntervall, decimal vcurJulDate, int vlngValue) { if (!IsJulDate(vcurJulDate)) { Information.Err().Raise(50000, "UtilTime", "Das Datum ist ungültig."); goto IL_025a; } int dlngDays2 = default(int); int dlngTime2 = default(int); switch (vnumIntervall) { case Enums.TiJulDateIntervall.tiDays: dlngDays2 = Math.Abs(vlngValue); dlngTime2 = 0; break; case Enums.TiJulDateIntervall.tiHours: dlngDays2 = Math.Abs(vlngValue) / 24; dlngTime2 = Convert.ToInt32(decimal.Subtract(decimal.Multiply(new decimal(Math.Abs(vlngValue)), new decimal(3600000L)), decimal.Multiply(new decimal(dlngDays2), new decimal(86400000L)))); break; case Enums.TiJulDateIntervall.tiMinutes: dlngDays2 = Math.Abs(vlngValue) / 1440; dlngTime2 = Convert.ToInt32(decimal.Subtract(decimal.Multiply(new decimal(Math.Abs(vlngValue)), new decimal(60000L)), decimal.Multiply(new decimal(dlngDays2), new decimal(86400000L)))); break; case Enums.TiJulDateIntervall.tiSeconds: dlngDays2 = Math.Abs(vlngValue) / 86400; dlngTime2 = Convert.ToInt32(decimal.Subtract(decimal.Multiply(new decimal(Math.Abs(vlngValue)), new decimal(1000L)), decimal.Multiply(new decimal(dlngDays2), new decimal(86400000L)))); break; case Enums.TiJulDateIntervall.tiMilliSecs: dlngDays2 = Math.Abs(vlngValue) / 86400000; dlngTime2 = Convert.ToInt32(decimal.Subtract(new decimal(Math.Abs(vlngValue)), decimal.Multiply(new decimal(dlngDays2), new decimal(86400000L)))); break; } JULDATE_LONG dtypJulDateLng = InternGetJulSplit(vcurJulDate); decimal JulDateAddIntervall = default(decimal); checked { if (vlngValue >= 0) { dlngDays2 = dtypJulDateLng.jdDays + dlngDays2; dlngTime2 = dtypJulDateLng.jdTime + dlngTime2; InternCheckMaxTime(ref dlngDays2, ref dlngTime2); } else { dlngDays2 = dtypJulDateLng.jdDays - dlngDays2; if (dlngDays2 < 1) { Information.Err().Raise(50000, "UtilTime", "Subtraktion unterschreitet den Wertebereich."); goto IL_025a; } dlngTime2 = dtypJulDateLng.jdTime - dlngTime2; InternCheckMinTime(ref dlngDays2, ref dlngTime2); } try { JulDateAddIntervall = InternGetCurrencyDate(dlngDays2, dlngTime2); return(JulDateAddIntervall); } catch (Exception ex2) { ProjectData.SetProjectError(ex2); Exception ex = ex2; string dstrErrMsg = ExceptionHelper.GetExceptionMessage(ex); Information.Err().Raise(50000, "UtilTime", "Fehler beim Addieren/Subtrahieren des Intervalls.\n" + dstrErrMsg); ProjectData.ClearProjectError(); return(JulDateAddIntervall); } } IL_025a: JulDateAddIntervall = default; return(JulDateAddIntervall); }