我的情況是用戶選擇一個財政年度,比如說2015年1月1日至2015年12月31日。然後他選擇日期說'星期六','星期日'。C# - 獲取2日期之間的天數
我想獲取上述條件之間的所有日期。從日期範圍
....
for (var date = fromDate; date <= toDate; date = date.AddDays(1))
temp.Add(date);
可是如何才能讓只有天星期六「,「SUNDAY」 - :
我能得到的日期也是這樣嗎?
我的情況是用戶選擇一個財政年度,比如說2015年1月1日至2015年12月31日。然後他選擇日期說'星期六','星期日'。C# - 獲取2日期之間的天數
我想獲取上述條件之間的所有日期。從日期範圍
....
for (var date = fromDate; date <= toDate; date = date.AddDays(1))
temp.Add(date);
可是如何才能讓只有天星期六「,「SUNDAY」 - :
我能得到的日期也是這樣嗎?
使用DayOfWeek屬性:
for (var date = fromDate; date <= toDate; date = date.AddDays(1))
{
if (date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday)
temp.Add(date);
}
在情況下,如果設定一週的天也不是一成不變的:
HashSet<DayOfWeek> daysOfWeek = new HashSet<DayOfWeek> { DayOfWeek.Saturday, DayOfWeek.Sunday };
List<DateTime> temp = new List<DateTime>();
for (var date = fromDate.Date; date <= toDate; date = date.AddDays(1))
if (daysOfWeek.Contains(date.DayOfWeek))
temp.Add(date);
var fromDate = new DateTime(2015, 1, 1);
var toDate = new DateTime(2015, 2, 15);
var dates = Enumerable.Range(0, (int)(toDate - fromDate).TotalDays + 1)
.Select(i => fromDate.AddDays(i))
.Where(i => i.DayOfWeek == DayOfWeek.Saturday || i.DayOfWeek == DayOfWeek.Sunday);
foreach(var date in dates)
{
Console.WriteLine("{0:yyyy-MM-dd ddd}", date);
}
迴路簡單,沒有工作,但Linq更有趣。
但是@Eric:爲什麼旗子呢?您可以直接選擇工作日:
DateTime fromDate = new DateTime(2015, 1, 1);
DateTime toDate = new DateTime(2015, 2, 15);
DateTime[] dates = Enumerable.Range(0, (int)toDate.Subtract(fromDate).TotalDays + 1)
.Select(i => fromDate.AddDays(i))
.Where(i => (i.DayOfWeek == DayOfWeek.Monday || i.DayOfWeek == DayOfWeek.Sunday)).ToArray();
foreach(DateTime date in dates)
{
Console.WriteLine("{0:yyyy-MM-dd ddd}", date);
}
可以使用TimeSpan
類
timespan p = new timespan();
p = dt2-dt1;
MessageBox.Show(p.days.tostring());
'DayOfWeek'是不同的每次。如果它不同呢? – Anup
@Backs哦,不需要,但謝謝; D。堆棧溢出是我可以寫一些程序的原因哈哈,我只是回答一些謝謝:D –
如果用戶選擇'星期一'或'星期二'或可能是一週中的所有天,那麼上面的代碼將不會做。如何處理呢? – Anup