Example #1
0
        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);
        }
Example #2
0
        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);
        }