Alice
Alice

Reputation: 633

How to get the name of each day in next month?

DateTime dt = new DateTime();
dt = DateTime.Now.AddMonths(1);
int x = DateTime.DaysInMonth(dt.Year, dt.Month);
MessageBox.Show(x.ToString());  // works ok - 31

And how can I say the following:

foreach (day in dt.Days)
{
string abc = dt.DayOfWeek.ToString();
MessageBox.Show(abc)
}

Problem is in the first line - foreach...

Upvotes: 2

Views: 1992

Answers (5)

Habib
Habib

Reputation: 223312

You can do:

DateTime dt = new DateTime();
dt = DateTime.Now.AddMonths(1);
DateTime conditionDateTime = new DateTime(dt.Year, dt.Month,DateTime.DaysInMonth(dt.Year, dt.Month));

 for (DateTime dt1 = new DateTime(dt.Year, dt.Month, 1); dt1 <conditionDateTime; dt1 = dt1.AddDays(1))
     {
        Console.Write(dt1.ToShortDateString() + " : ");
        Console.WriteLine(dt1.DayOfWeek);
     }

This will give you

8/1/2012 : Wednesday
8/2/2012 : Thursday
8/3/2012 : Friday
8/4/2012 : Saturday
8/5/2012 : Sunday
8/6/2012 : Monday
8/7/2012 : Tuesday
8/8/2012 : Wednesday
8/9/2012 : Thursday
8/10/2012 : Friday
8/11/2012 : Saturday
8/12/2012 : Sunday
8/13/2012 : Monday
8/14/2012 : Tuesday
8/15/2012 : Wednesday
8/16/2012 : Thursday
8/17/2012 : Friday
......

Upvotes: 4

Alex L
Alex L

Reputation: 390

This should do the job.

DateTime Base = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(1).Month, 1);
int x = DateTime.DaysInMonth(Base.Year, Base.Month);
while (Base.Day != x)
{
    Console.WriteLine(Base.DayOfWeek.ToString());
    Base = Base.AddDays(1);
}

Upvotes: 4

Alex
Alex

Reputation: 23300

You can also leverage Enumerable.Range and LINQ (and the DaysOfWeek enum)

DateTime dt = DateTime.Now.AddMonths(1);

Enumerable.Range(1, DateTime.DaysInMonth(dt.Year, dt.Month))
    .Select(dayNumber => new DateTime(dt.Year, dt.Month, dayNumber))
    .Select(dayName => dayName.DayOfWeek.ToString()).ToList()
    .ForEach(day => MessageBox.Show(day));

The two .Select()s can be merged but I kept them separated for readability.

Upvotes: 4

Nikson Kanti Paul
Nikson Kanti Paul

Reputation: 3440

try this

string day = DateTime.Now.ToString("ddd");

Upvotes: 1

KV Prajapati
KV Prajapati

Reputation: 94643

Try DateTime.ToString(format) method.

DateTime dt = new DateTime();
String dayName=dt.ToString("ddd");

Upvotes: 1

Related Questions