Example #1
0
        public static string ToJson(object obj, DateTimeMode dateFormat, params string[] fields)
        {
            JsonSerializerSettings setting = new JsonSerializerSettings();

            setting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

            List <JsonConverter> converters = new List <JsonConverter>();

            if (dateFormat == DateTimeMode.ISO)
            {
                IsoDateTimeConverter converter = new IsoDateTimeConverter()
                {
                    DateTimeFormat = "yyyy-MM-dd'T'HH:mm:ss"
                };
                converters.Add(converter);
            }
            else if (dateFormat == DateTimeMode.JS)
            {
                converters.Add(new JavaScriptDateTimeConverter());
            }
            setting.Converters = converters;
            if (fields.Length > 0)
            {
                setting.ContractResolver = new ExcludePropertiesContractResolver(fields);
            }
            return(JsonConvert.SerializeObject(obj, Formatting.None, setting));
        }
Example #2
0
        public void SetPickerMode(int pickerMode)
        {
            var mode = (DateTimeMode)pickerMode;

            if (mode != DateTimeMode.Date &&
                mode != DateTimeMode.Time &&
                mode != DateTimeMode.DateTime &&
                mode != DateTimeMode.Month)
            {
                mode = DateTimeMode.Date;
            }

            PickerMode = mode;
        }
Example #3
0
        private static IJournal <File> OpenJournal(EFileAccess access, DateTimeMode mode)
        {
            string directoryPath = Path.Combine(Utils.FindJournalsPath(), FOLDER_PATH);
            var    jb            = new JournalBuilder()
                                   .WithRecordCountHint(TestUtils.GENERATE_RECORDS_COUNT)
                                   .WithPartitionBy(EPartitionType.Month)
                                   .WithLocation(directoryPath)
                                   .WithSymbolColumn("Path", 10000, 20, 20)
                                   .WithTimestampColumn("Modified");

            if (mode == DateTimeMode.EpochMilliseconds)
            {
                jb = jb.WithEpochDateTimeColumn("Modified")
                     .WithEpochDateTimeColumn("Created");
            }
            return(jb.WithAccess(access).ToJournal <File>());
        }
Example #4
0
        public static DateTime Parse(string dateTimeString, out DateTimeMode mode)
        {
            Exception UnrecognizableException()
            {
                return(new ArgumentException("unrecognizable DateTime", nameof(dateTimeString)));
            }

            if (string.IsNullOrWhiteSpace(dateTimeString))
            {
                mode = DateTimeMode.Time;
                return(DateTime.Now);
            }

            if (DateTime.TryParse(dateTimeString, out var exactTime))
            {
                mode = exactTime.TimeOfDay.Equals(TimeSpan.Zero) ? DateTimeMode.Date : DateTimeMode.Time;
                return(exactTime);
            }

            switch (dateTimeString.ToLower())
            {
            case "now":
                mode = DateTimeMode.Time;
                return(DateTime.Now);

            case "today":
                mode = DateTimeMode.Date;
                return(DateTime.Now);

            case "tomorrow":
                mode = DateTimeMode.Date;
                return(DateTime.Now.AddDays(1));

            case "yesterday":
                mode = DateTimeMode.Date;
                return(DateTime.Now.AddDays(-1));
            }


            var match = Regex.Match(dateTimeString, @"^([\+\-])([\d\.]+)(\w+)$");

            if (match.Success)
            {
                int factor;
                switch (match.Groups[1].Value)
                {
                case "+":
                    factor = 1;
                    break;

                case "-":
                    factor = -1;
                    break;

                default:
                    throw UnrecognizableException();
                }
                if (!double.TryParse(match.Groups[2].Value, out var amount))
                {
                    throw UnrecognizableException();
                }
                var unit = match.Groups[3].Value;

                return(DateTimeHelpers.GetTimeFromNow(factor, amount, unit, true, out mode));
            }

            match = Regex.Match(dateTimeString, @"^(next|previous|last)\-(([\d\.]+)(\-)?)?(\w+)$", RegexOptions.IgnoreCase);
            if (match.Success)
            {
                int factor;
                switch (match.Groups[1].Value.ToLower())
                {
                case "next":
                    factor = 1;
                    break;

                case "previous":
                case "last":
                    factor = -1;
                    break;

                default:
                    throw UnrecognizableException();
                }
                var amountString = match.Groups[3].Value;
                var amount       = 1.0;
                if (!string.IsNullOrEmpty(amountString) && !double.TryParse(amountString, out amount))
                {
                    throw UnrecognizableException();
                }

                var unit = match.Groups[5].Value;

                return(DateTimeHelpers.GetTimeFromNow(factor, amount, unit, string.IsNullOrEmpty(match.Groups[4].Value), out mode));
            }

            match = Regex.Match(dateTimeString, @"^([\d\.]+)(\-)?(\w+)-(ago|later)$", RegexOptions.IgnoreCase);
            if (match.Success)
            {
                int factor;
                switch (match.Groups[4].Value.ToLower())
                {
                case "later":
                    factor = 1;
                    break;

                case "ago":
                    factor = -1;
                    break;

                default:
                    throw UnrecognizableException();
                }
                var amountString = match.Groups[1].Value;
                var amount       = 1.0;
                if (!string.IsNullOrEmpty(amountString) && !double.TryParse(amountString, out amount))
                {
                    throw UnrecognizableException();
                }

                var unit = match.Groups[3].Value;

                return(DateTimeHelpers.GetTimeFromNow(factor, amount, unit, string.IsNullOrEmpty(match.Groups[2].Value), out mode));
            }

            throw UnrecognizableException();
        }
Example #5
0
        private static DateTime GetTimeFromNow(int factor, double amount, string unit, bool shortUnit, out DateTimeMode mode)
        {
            amount *= factor;

            if (shortUnit)
            {
                switch (unit.ToLower())
                {
                case "ms":
                    mode = DateTimeMode.Time;
                    return(DateTime.Now.AddMilliseconds(amount));

                case "s":
                    mode = DateTimeMode.Time;
                    return(DateTime.Now.AddSeconds(amount));

                case "min":
                case "mins":
                case "m":
                    mode = DateTimeMode.Time;
                    return(DateTime.Now.AddMinutes(amount));

                case "h":
                    mode = DateTimeMode.Time;
                    return(DateTime.Now.AddHours(amount));

                case "d":
                    mode = DateTimeMode.Date;
                    return(DateTime.Now.AddDays(amount));

                case "w":
                    mode = DateTimeMode.Date;
                    return(DateTime.Now.AddWeeks(amount));

                case "yr":
                case "yrs":
                case "y":
                    mode = DateTimeMode.Date;
                    return(DateTime.Now.AddYears(amount));

                default:
                    throw new ArgumentException("unrecognizable DateTime");
                }
            }

            switch (unit.ToLower())
            {
            case "millisecond":
            case "milliseconds":
            case "ms":
                mode = DateTimeMode.Time;
                return(DateTime.Now.AddMilliseconds(amount));

            case "second":
            case "seconds":
            case "s":
                mode = DateTimeMode.Time;
                return(DateTime.Now.AddSeconds(amount));

            case "minute":
            case "minutes":
            case "min":
            case "mins":
            case "m":
                mode = DateTimeMode.Time;
                return(DateTime.Now.AddMinutes(amount));

            case "hour":
            case "hours":
            case "h":
                mode = DateTimeMode.Time;
                return(DateTime.Now.AddHours(amount));

            case "day":
            case "days":
            case "d":
                mode = DateTimeMode.Date;
                return(DateTime.Now.AddDays(amount));

            case "week":
            case "weeks":
            case "w":
                mode = DateTimeMode.Date;
                return(DateTime.Now.AddWeeks(amount));

            case "month":
            case "months":
                mode = DateTimeMode.Date;
                return(DateTime.Now.AddMonths(amount));

            case "year":
            case "years":
            case "yr":
            case "yrs":
            case "y":
                mode = DateTimeMode.Date;
                return(DateTime.Now.AddYears(amount));

            case "decade":
            case "decades":
                mode = DateTimeMode.Date;
                return(DateTime.Now.AddDecades(amount));

            case "century":
            case "centuries":
                mode = DateTimeMode.Date;
                return(DateTime.Now.AddCenturies(amount));

            default:
                throw new ArgumentException("unrecognizable DateTime");
            }
        }
 public IGlobalConfiguration DateTime(DateTimeMode mode)
 {
    DateTimeMode = mode;
    return this;
 }
 internal GlobalConfiguration()
 {
    DateTimeMode = DateTimeMode.SecondPrecision;
 }
Example #8
0
 private IJournal <File> CreateJournal(DateTimeMode mode, EFileAccess access = EFileAccess.ReadWrite)
 {
     Utils.ClearJournal <File>(FOLDER_PATH);
     return(OpenJournal(access, mode));
 }