Procházet zdrojové kódy

添加获取日期信息的函数

世龙 苏 před 7 roky
rodič
revize
5df56d2055
2 změnil soubory, kde provedl 106 přidání a 0 odebrání
  1. 1 0
      CommonLibrary/CommonLibrary.csproj
  2. 105 0
      CommonLibrary/DateUtil.cs

+ 1 - 0
CommonLibrary/CommonLibrary.csproj

@@ -64,6 +64,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="ComputerUtil.cs" />
+    <Compile Include="DateUtil.cs" />
     <Compile Include="HardDiskInfo.cs" />
     <Compile Include="IpAddressAttribute.cs" />
     <Compile Include="MacAddress.cs" />

+ 105 - 0
CommonLibrary/DateUtil.cs

@@ -0,0 +1,105 @@
+namespace CommonLibrary
+{
+    using System;
+    using System.Globalization;
+
+    public static class DateUtil
+    {
+        private static readonly string[] Weekdays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
+
+        /// <summary>
+        /// 得到本周第一天(以星期天为第一天)
+        /// </summary>
+        /// <param name="datetime">指定日期</param>
+        /// <returns>返回本周以星期天为第一天的日期</returns>
+        public static DateTime GetWeekFirstDaySun(DateTime datetime)
+        {
+            // 星期天为第一天
+            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
+            int daydiff = (-1) * weeknow;
+
+            // 本周第一天
+            string firstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
+
+            return Convert.ToDateTime(firstDay);
+        }
+
+        /// <summary>
+        /// 得到本周第一天(以星期一为第一天)
+        /// </summary>
+        /// <param name="datetime">指定日期</param>
+        /// <returns>返回本周以星期一为第一天的日期</returns>
+        public static DateTime GetWeekFirstDayMon(DateTime datetime)
+        {
+            // 星期一为第一天
+            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
+
+            // 因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。
+            weeknow = weeknow == 0 ? (7 - 1) : (weeknow - 1);
+            int daydiff = (-1) * weeknow;
+
+            // 本周第一天
+            string firstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
+
+            return Convert.ToDateTime(firstDay);
+        }
+
+        /// <summary>
+        /// 得到本周最后一天(以星期六为最后一天)
+        /// </summary>
+        /// <param name="datetime">指定日期</param>
+        /// <returns>以星期六为最后一天的日期</returns>
+        public static DateTime GetWeekLastDaySat(DateTime datetime)
+        {
+            // 星期六为最后一天
+            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
+            int daydiff = (7 - weeknow) - 1;
+
+            // 本周最后一天
+            string lastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
+
+            return Convert.ToDateTime(lastDay);
+        }
+
+        /// <summary>
+        /// 得到本周最后一天(以星期天为最后一天)
+        /// </summary>
+        /// <param name="datetime">指定日期</param>
+        /// <returns>以星期天为最后一天的日期</returns>
+        public static DateTime GetWeekLastDaySun(DateTime datetime)
+        {
+            // 星期天为最后一天
+            int weeknow = Convert.ToInt32(datetime.DayOfWeek);
+            weeknow = weeknow == 0 ? 7 : weeknow;
+            int daydiff = 7 - weeknow;
+
+            // 本周最后一天
+            string lastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
+
+            return Convert.ToDateTime(lastDay);
+        }
+
+        /// <summary>
+        /// 获取指定日期,在为一年中为第几周
+        /// </summary>
+        /// <param name="datetime">指定日期</param>
+        /// <returns>返回第几周</returns>
+        public static int GetWeekOfYear(DateTime datetime)
+        {
+            GregorianCalendar gc = new GregorianCalendar();
+            int weekOfYear = gc.GetWeekOfYear(datetime, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
+
+            return weekOfYear;
+        }
+
+        /// <summary>
+        /// 获取中文星期
+        /// </summary>
+        /// <param name="datetime">指定日期</param>
+        /// <returns>中文星期</returns>
+        public static string GetWeekDayCN(DateTime datetime)
+        {
+            return Weekdays[Convert.ToInt32(datetime.DayOfWeek)];
+        }
+    }
+}