今月の経過した日にち・残りの日にちリストを1行で作成する
・今月の経過した日にちの列挙
new List<int>(Enumerable.Range(1, DateTime.Today.Day))
・今月の残りの日にちの列挙
new List<int>(Enumerable.Range(DateTime.Today.Day + 1, DateTime.DaysInMonth(DateTime.Today.Year, DateTime.Today.Month) - DateTime.Today.Day))
System.Linq.Enumerable.Rangeメソッドで整数を列挙してやります。
第一引数が始点の数字、第二引数が列挙個数となっています。
始点を1日にして、列挙数に今日の日付を入れてやれば、月初めから今日まで経過した日にちを列挙できます。
ListはRangeメソッドの戻り値であるIEnumerable型コレクションを初期値としてコンストラクタに突っ込めるので、これで経過日にちを全部列挙するリストができあがります。
残り日にちの場合、明日の日付を始点として、月末日から今日までの日数を引いた分だけ列挙します。
DayInMonthで指定年月の日数が出せるのでこれで月末日を出します。
・サンプルコード
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { public class Sample { public static void Main() { Console.WriteLine("今日:" + DateTime.Now + Environment.NewLine); Console.WriteLine("今月の経過した日にち"); new List<int>(Enumerable.Range(1, DateTime.Today.Day)) .ForEach(i => Console.WriteLine(i)); Console.WriteLine(); Console.WriteLine("今月の残りの日にち"); new List<int>(Enumerable.Range(DateTime.Today.Day + 1, DateTime.DaysInMonth(DateTime.Today.Year, DateTime.Today.Month) - DateTime.Today.Day)) .ForEach(i => Console.WriteLine(i)); Console.ReadLine(); } } }
・実行結果
今日:2015/07/17 10:07:27
今月の経過した日にち
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
今月の残りの日にち
18
19
20
21
22
23
24
25
26
27
28
29
30
31