C# 如何查找给定年份中一周中的所有特定天数?
我的任务是找出用户输入的一年中的13个星期五C# 如何查找给定年份中一周中的所有特定天数?,c#,datetime,C#,Datetime,我的任务是找出用户输入的一年中的13个星期五 有人能解释一下怎么做吗?我是c的初学者请尝试通过该线程中显示的代码来激发灵感: int year = 2015; for(int m=1; m<=12; m++) { var dt = new DateTime(year, m, 13); if (dt.DayOfWeek == DayOfWeek.Friday) Console.WriteLine(dt.ToShortDateString(
有人能解释一下怎么做吗?我是c的初学者请尝试通过该线程中显示的代码来激发灵感:
int year = 2015;
for(int m=1; m<=12; m++)
{
var dt = new DateTime(year, m, 13);
if (dt.DayOfWeek == DayOfWeek.Friday)
Console.WriteLine(dt.ToShortDateString());
}
当然,您必须检查所选的星期五是否为13日。如果您想输入这些日期,可以结合使用循环和枚举等
int year = 2015;
for (int i = 1; i < 13; i++)
{
if(new DateTime(year, i, 13).DayOfWeek == DayOfWeek.Friday)
Console.WriteLine(new DateTime(year, i, 13));
}
如果你想计算月数,你可以使用这样的结果
Console.WriteLine((new DateTime(year, i, 13)).Month);
如果你想得到你的月份名称的基础上,你可以使用自定义喜欢
你也可以用like
或
可以使用linq这样做
var year = 2015;
var months = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
var unluckyDays = months.Select(m => new DateTime(year, m, 13)).Where(dt => dt.DayOfWeek == DayOfWeek.Friday);
第一个Select语句将整数列表投影到日期时间列表中,表示指定年份中每个月的第13个
然后,只需将此列表筛选为星期五。要获取可以使用Linq的日期,请执行以下操作: 把它们打印出来
Console.WriteLine(String.Join(Environment.NewLine, dates));
DateTime对象有一个名为DayOfWeek的属性。您可以利用它来帮助您确定所提供的日期是否返回星期五的DayOfWeek值:请参见以下内容:
static void Main(string[] args)
{
for (var i = 1; i < 12; i++)
{
DateTime date = new DateTime(2015, i, 13);
if (date.DayOfWeek == DayOfWeek.Friday)
Console.WriteLine(date.ToShortDateString());
}
Console.ReadLine();
}
是的,很简单
int year = 2014;
DateTime day = new DateTime(2014,1,1);
while (day.Year == year)
{
if (day.DayOfWeek == DayOfWeek.Friday && day.Day == 13)
{
Console.WriteLine(day);
}
day = day.AddDays(1);
}
您可以在年初初始化一个DateTime变量
然后在我打印的代码中循环一年中的每一天
你可以在这里找到DateTime类的更多信息
我认为只显示一个月就足够了,因为它要求特定年份的第13个星期五。因此,无论如何,只有这一年是不同的。但我必须说代码很好且易于阅读。@maam27当然,我也添加了它。你可以用Enumerable代替months。Range1,12你的得票率很低,因为你应该自己努力回答这个问题,也许可以展示一些你尝试过的代码,并寻求如何修复它的帮助。这会打印一年中所有的星期五,不仅仅是一个月13号的星期五。你可以通过只创建12个日期来检查而不是365个日期来提高效率,实际上366个herety,看起来很简单,但它非常聪明,哦,好吧,总有一天我也可以编写智能代码=@德拉甘·莫扬,技能来自实践。如果我的回答有帮助,请将其标记为已接受
var year = 2015;
var months = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
var unluckyDays = months.Select(m => new DateTime(year, m, 13)).Where(dt => dt.DayOfWeek == DayOfWeek.Friday);
var dates = Enumerable
.Range(1, 12) // All months
.Select(month => new DateTime(2015, month, 13))
.Where(date => date.DayOfWeek == DayOfWeek.Friday);
Console.WriteLine(String.Join(Environment.NewLine, dates));
static void Main(string[] args)
{
for (var i = 1; i < 12; i++)
{
DateTime date = new DateTime(2015, i, 13);
if (date.DayOfWeek == DayOfWeek.Friday)
Console.WriteLine(date.ToShortDateString());
}
Console.ReadLine();
}
int year = 2014;
DateTime day = new DateTime(2014,1,1);
while (day.Year == year)
{
if (day.DayOfWeek == DayOfWeek.Friday && day.Day == 13)
{
Console.WriteLine(day);
}
day = day.AddDays(1);
}