分享一個我寫的批量選擇日期的方法

来源:http://www.cnblogs.com/2567-/archive/2017/07/12/7156001.html
-Advertisement-
Play Games

要求大概就是,選定一段時間周期,勾選周日至周六,把時間周期符合要求的日期返回,例如:勾選了周日,就把時間周期內所有是周日的日期返回,勾選了周日和周五,就把時間周期內所有周五和周日的日期返回。重覆間隔是以時間周期內的星期為單位進行跳選,間隔為0時,每個星期都遍歷,間隔為1時,遍歷完第一周,跳到第三周再 ...


要求大概就是,選定一段時間周期,勾選周日至周六,把時間周期符合要求的日期返回,例如:勾選了周日,就把時間周期內所有是周日的日期返回,勾選了周日和周五,就把時間周期內所有周五和周日的日期返回。重覆間隔是以時間周期內的星期為單位進行跳選,間隔為0時,每個星期都遍歷,間隔為1時,遍歷完第一周,跳到第三周再遍歷,間隔為2時,遍歷完第一周,跳到第四周再遍歷,以此類推。

代碼如下:

 1         public List<string> VolumeSet(VolumeSetDto input)
 2         {
 3             GregorianCalendar gc = new GregorianCalendar();
 4             var datesDictionary = new Dictionary<DateTime, DayOfWeek>();
 5             var begin = input.beginTime.Date;
 6             while (begin <= input.endTime.Date)
 7             {
 8                 datesDictionary.Add(begin, gc.GetDayOfWeek(begin));
 9                 var week = gc.GetDayOfWeek(begin);
10                 if (week == DayOfWeek.Saturday)
11                     begin = begin.AddDays((7 * (input.interval ?? 0) + 1));
12                 else begin = begin.AddDays(1);
13             }
14             var dates = new List<string>();
15             foreach (var date in datesDictionary)
16             {
17                 if (input.dayWeek != null && input.dayWeek.Count != 0)
18                 {
19                     if (input.dayWeek.Contains(date.Value))
20                         dates.Add(date.Key.ToString());
21                 }
22                 else dates.Add(date.Key.ToString());
23             }
24             return dates;
25         }
26 
27         public class VolumeSetDto
28         {
29             /// <summary>
30             /// 開始時間
31             /// </summary>
32             public DateTime beginTime { get; set; }
33 
34             /// <summary>
35             /// 結束時間
36             /// </summary>
37             public DateTime endTime { get; set; }
38 
39             /// <summary>
40             /// 間隔周期
41             /// </summary>
42             public int? interval { get; set; }
43 
44             /// <summary>
45             /// 選中周幾把枚舉Add進來
46             /// </summary>
47             public List<DayOfWeek> dayWeek { get; set; }
48         }
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 介紹什麼的就免了.直接進入正題 平臺: Windows 10 IDE : Visual studio 2017 首先從官網下載最新的SDK,https://sciter.com/download/ 創建流程. https://sciter.com/forums/topic/simple-questi ...
  • 解決網卡無法自動獲取IP址的方法 為了省錢或者一戶多機,很多人都購買寬頻路由器共用上網。在架設路由上網的時候,有些“師傅”可能不懂或是偷懶,開啟了寬頻路由器的DHCP( Dynamic Host Configuration Protocol(動態主機分配協議))功能,這樣,其他機子只要設置“自動獲取 ...
  • 背水一戰 Windows 10 之 控制項(集合類 - ListViewBase): ListView, GridView ...
  • 因為這個解法有點複雜,因此單獨開一貼介紹。《演算法(第四版)》中的題目是這樣的:1.3.49棧與隊列。用有限個棧實現一個隊列,保證每個隊列操作(在最壞情況下)都只需要常數次的棧操作。那麼這裡就使用六個棧來解決這個問題。這個演算法來自於這篇論文。原文里用的是 Pure Lisp,不過語法很簡單,還是很容易... ...
  • 一、摘要 1.1、為什麼叫本次的分享課叫《修煉手冊》? 阿笨希望本次的分享課中涉及覆蓋的一些小技巧、小技能給您帶來一些幫助。希望您在日後工作中把它作為一本實際技能手冊進行儲備,以備不時之需,一旦當手頭遇到與Dapper修煉手冊中相似用法的地方和場景,可以直接拿來進行翻閱並靈活的運用到項目中。最後阿笨 ...
  • 1 文件夾/文件 檢查、新增、複製、移動、刪除,2 文件讀寫,記錄文本日誌/讀取配置文件3 三種序列化器4 xml和json1.文件夾/文件 檢查、新增、複製、移動、刪除,2 文件讀寫,記錄文本日誌/讀取配置文件 日誌方法 3 三種序列化器 在序列化類之前先用 [Serializable] //必須 ...
  • 本文屬於原創,轉載請註明出處,謝謝! 一、開發環境 操作系統:Windows 10 開發環境:VS2015 編程語言:C# IIS版本:10.0.0.0 二、添加WCF服務、Internet Information Services(IIS) 1、進入“控制面板”,打開“程式和功能”,點擊左上角的“ ...
  • 生成解決方案 F6,生成項目Shift+F6 調試執行F5,終止調試執行Shift+F5 執行調試Ctrl+F5 查找下一個F3,查找上一個Shift+F3 附加到進程Ctrl+Alt+P,逐過程F10,逐語句執行F11 切換斷點F9(添加或取消斷點) 運行至游標處Ctrl+F10 跳出當前方法Sh ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...