如何獲得C#中沒有星期五和星期六的一個月內的天數?如何在沒有周末的情況下獲取DateTime.DaysInMonth?
2
A
回答
6
這裏,快速和骯髒的:
class Program
{
static void Main(string[] args)
{
int month = DateTime.Today.Month;
int year = DateTime.Today.Year;
int daysInMonthMinusFridayAndSaturday = 0;
for (int i = 1; i <= DateTime.DaysInMonth(year,month); i++)
{
DateTime thisDay = new DateTime(year,month,i);
if(thisDay.DayOfWeek != DayOfWeek.Friday && thisDay.DayOfWeek != DayOfWeek.Saturday)
{
daysInMonthMinusFridayAndSaturday += 1;
}
}
Console.WriteLine(daysInMonthMinusFridayAndSaturday);
Console.ReadLine();
}
}
1
我會避免循環或迭代,做這樣的:
int GetWorkDays(int year, int month)
{
var firstDayOfMonth = new DateTime(year, month, 1).DayOfWeek;
var daysInMonth = DateTime.DaysInMonth(year, month);
// count whole weeks first
var wholeWeeks = daysInMonth/7;
var extraDays = daysInMonth % 7;
// calculate the overlap of the "remainder days" with the weekend.
var lastDayOfMonth = (int) (firstDayOfMonth + extraDays - 1);
var overlapStart = Math.Max((int) firstDayOfMonth, (int) DayOfWeek.Friday);
var overlapEnd = Math.Min(lastDayOfMonth, (int) DayOfWeek.Saturday);
var weekendOverlap = Math.Max(0, overlapEnd - overlapStart + 1);
// substract weekend days
return daysInMonth - wholeWeeks * 2 - weekendOverlap;
}
+0
爲什麼要關心一些如此簡單的性能的一點點?這並不是說最糟糕的情況下會花費幾個毫秒。 – 2010-12-19 10:18:38
+1
@Camilo Martin:因爲它更好:)我同意沒有現實生活中的意義。至少在有人發明真正漫長的月份之前。 – Ran 2010-12-19 10:20:34
6
強制性LINQ的解決方案:
int days = Enumerable.Range(1, DateTime.DaysInMonth(year, month))
.Select(day => new DateTime(year, month, day))
.Count(d => d.DayOfWeek != DayOfWeek.Saturday &&
d.DayOfWeek != DayOfWeek.Friday);
相關問題
- 1. 在沒有周末的情況下在daterangepicker中計算天
- 2. 如何在沒有周期的情況下初始化std :: vector?
- 3. 如何在沒有索引號的情況下獲取數據
- 4. 如何在沒有頁面的情況下獲取網址
- 5. 如何在沒有FacesContext的情況下獲取資源路徑?
- 6. 如何在沒有網站的情況下獲取包名?
- 7. 如何在沒有輸出的情況下獲取file.R
- 8. 如何在沒有域名的情況下獲取用戶名
- 9. 如何在沒有Nuget的情況下獲取Entity Framework 4.2?
- 10. 在沒有統計的情況下獲取沒有行的表
- 11. 沒有周末
- 12. 在沒有任何東西的情況下獲取RSS
- 13. 如何在javascript中獲取週末?
- 14. java日曆 - 獲取最後5天的一週(沒有周末)
- 15. 在沒有UIEvent的情況下獲取所有觸摸
- 16. 如何在沒有API的情況下在Instagram中獲取所有hashtag圖片?
- 17. 如何在沒有任何請求,會話等情況下獲取上下文?
- 18. 如何在url的末尾沒有.json的情況下呈現json
- 19. 如何在沒有獲得建議的情況下獲取登錄選項?
- 20. 如何在沒有獲取整個文檔的情況下獲得字段值?
- 21. 如何在沒有AJAX的情況下在本地抓取JSON
- 22. 在沒有DisplayObject的情況下在ActionScript-3中獲取舞臺?
- 23. 在沒有$ _GET的情況下在php中獲取jQuery變量
- 24. 如何獲取週末的日期?
- 25. 在沒有session.lookup的情況下獲取GMaven腳本中的MavenProjectHelper
- 26. 在沒有別名的情況下獲取Joomla中的鏈接?
- 27. 在沒有unrar的情況下獲取rar文件的名字
- 28. 在沒有WMI的情況下獲取完整的CPU名稱
- 29. 在沒有SPI的情況下獲取RFID卡的UID值
- 30. 在沒有用戶交互的情況下獲取新的access_code?
那麼你會只是迭代每一天,每個星期五和星期六從一個計數器初始化爲常規DaysInMonth我猜,刪除1。 – 2010-12-19 09:24:45
@Camilo Martin - 你的意思是'每天迭代'? DateTime.DaysInMonth檢索一個int而不是一個集合。 – Erez 2010-12-19 09:38:35
[.NET日期比較:計算自日期以來的工作天數?](http://stackoverflow.com/questions/165887/net-date-compare-count-the-amount-of-working- days-since-a-date) – Oded 2010-12-19 09:44:45