예제 #1
0
        public void ParsingData()
        {
            int diffDate = EndDateTime.Subtract(StartDateTime).Days;

            for (int str = 0; str <= diffDate; str++)
            {
                string date = StartDateTime.AddDays(str).ToString("yyyyMMdd");
                var    data = ParsingHTML.GetTWSE(date);
                foreach (var item in data)
                {
                    SQlite_Module.Manipulate($@"INSERT INTO TWSE(""證券代號"", ""證券名稱"", ""成交股數"", ""成交筆數"", ""成交金額"",""開盤價"",""最高價"",""最低價"",""收盤價"",""漲跌(+/-)"",""漲跌價差"",""最後揭示買價"",""最後揭示買量"",""最後揭示賣價"",""最後揭示賣量"",""本益比"") VALUES({string.Join(",", item.Value)})");
                }
            }
            TWSE_Data = SQlite_Module.GetDataTable("SELECT * FROM TWSE");
        }
예제 #2
0
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            var results = new List <ValidationResult>();

            if (string.IsNullOrWhiteSpace(Name))
            {
                results.Add(new ValidationResult($"{nameof(Name)} cannot be null, empty or consist of only whitespace", new[] { nameof(Name) }));
            }

            if (EndDateTime < StartDateTime)
            {
                results.Add(new ValidationResult($"{nameof(EndDateTime)} cannot be before {nameof(StartDateTime)}", new[] { nameof(StartDateTime), nameof(EndDateTime) }));
            }
            else if (EndDateTime < StartDateTime.AddDays(10))
            {
                results.Add(new ValidationResult($"{nameof(EndDateTime)} must be atleast 1 day after {nameof(StartDateTime)}", new[] { nameof(StartDateTime), nameof(EndDateTime) }));
            }

            return(results);
        }
예제 #3
0
 void Loadchart()
 {
     SeriesCollectionline = new SeriesCollection();
     SeriesCollectionpie  = new SeriesCollection();
     casenum = new int[4] {
         0, 0, 0, 0
     };
     for (int i = 1; i < 5; i++)
     {
         StackedAreaSeries stackedareaSeries = new StackedAreaSeries
         {
             Title          = "第" + i + "类",
             LineSmoothness = i
         };
         var      Values    = new ChartValues <DateTimePoint>();
         var      days      = (EndDateTime - StartDateTime).Days;
         DateTime queryDate = StartDateTime.AddDays(-1);
         for (int j = 0; j < days; j++)
         {
             queryDate = queryDate.AddDays(1);
             int num = GetCaseCount(queryDate.Date, queryDate.Date, i);
             casenum[i - 1] += num;
             Values.Add(new DateTimePoint(queryDate.Date, Convert.ToDouble(num)));
         }
         stackedareaSeries.Values = Values;
         SeriesCollectionline.Add(stackedareaSeries);
         PieSeries ps = new PieSeries();
         ps.Title  = "第" + i + "类";
         ps.Values = new ChartValues <int>(new int[1] {
             casenum[i - 1]
         });
         ps.DataLabels = true;
         ps.LabelPoint = PointLabel;
         SeriesCollectionpie.Add(ps);
     }
     linechart.Series = SeriesCollectionline;
     piechart.Series  = SeriesCollectionpie;
 }
        private DateTime GetDailyExecutionTime(DateTime now)
        {
            /* Has Intervals
             * 1) Get difference between Now and StartDate time
             * 2) Add frequency intervals to difference in days
             * 3) Divide Result with intervals and then multiply interval
             * 4) Add this result to start date Time
             */
            DateTime nextExecutionDate = DateTime.Now;

            if (FrequencyIntervals == 1)
            {
                string         cronString     = string.Format("{0} {1} {2} ? * * *", StartDateTime.Second, StartDateTime.Minute, StartDateTime.Hour);
                CronExpression cronExpression = new CronExpression(cronString);
                DateTimeOffset?nextValidTime  = cronExpression.GetNextValidTimeAfter(now);
                if (nextValidTime.HasValue)
                {
                    nextExecutionDate = nextValidTime.Value.DateTime.ToLocalTime();
                }
            }
            else
            {
                long diffInDays                             = _calendarHelper.GetDayDifference(now, StartDateTime);
                long diffPlusInterval                       = diffInDays + FrequencyIntervals;
                long diffPlusIntervalByInterval             = diffPlusInterval / FrequencyIntervals;
                long diffPlusIntervalByIntervalPlusInterval = (diffPlusIntervalByInterval) * FrequencyIntervals;

                nextExecutionDate = StartDateTime.AddDays(diffPlusIntervalByIntervalPlusInterval);
            }

            if (LastExecutionDateTime.HasValue &&
                _calendarHelper.GetDayDifference(nextExecutionDate, LastExecutionDateTime.Value) > FrequencyIntervals)
            {
                nextExecutionDate = now;
            }

            return(nextExecutionDate);
        }
예제 #5
0
 /// <summary>
 /// Creates a new survey instance (only for convenience)
 /// </summary>
 /// <param name="description"></param>
 /// <param name="daysFromNow"></param>
 /// <param name="url"></param>
 public Survey(string description, int daysFromNow, string url)
 {
     Description   = description;
     StartDateTime = DateTime.Now;
     EndDateTime   = StartDateTime.AddDays(daysFromNow);
 }