我有一个提取日期信息的网络应用程序。我想要的是提取全年的周数。
DateTime nicole = new DateTime();
for (int i = 1; i <= 366; i++)
{
System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
Int32 weekNo = ci.Calendar.GetWeekOfYear(
new DateTime(nicole.Year,nicole.Month,nicole.Day),
ci.DateTimeFormat.CalendarWeekRule,
ci.DateTimeFormat.FirstDayOfWeek
);
response.write(ci);
}
结果是
en-USen-USen-USen-USen-USen-USen-USen-USen-USen-USen-USen-USen-USen-USen-USen-USen-
请帮忙!
答案 0 :(得分:1)
您正在撰写ci
- CultureInfo。
请尝试编写weekNo
。这将是代表本周的int。虽然它会在一行上写入367个数字。您可能希望输出行读取
response.write(ci.ToString()) + Environment.NewLine;
编辑 - 您可能想要使用for循环,可能如下所示? <击> 撞击>
<击>Int32 weekNo = ci.Calendar.GetWeekOfYear(
new DateTime(nicole.Year,nicole.Month,i),
ci.DateTimeFormat.CalendarWeekRule,
ci.DateTimeFormat.FirstDayOfWeek
);
response.write(ci);
击> <击> 撞击>
进一步编辑。正如评论所说,在这里推进i
无济于事,因为它处于日常位置。相反,代码应为:
Int32 weekNo = ci.Calendar.GetWeekOfYear(
new DateTime(nicole.Year,1,1).AddDays(i),
ci.DateTimeFormat.CalendarWeekRule,
ci.DateTimeFormat.FirstDayOfWeek
);
response.write(ci);
答案 1 :(得分:0)
尝试写作
回复于(weekNo);
作为代码的最后一条陈述。
答案 2 :(得分:0)
我想你想要
response.write(weekNo); // not write(ci)
不要忘记添加某种分隔符。
旁注:取决于您使用的框架(MVC?普通ASP.Net,还有其他东西),可能有更好的方法来返回结构化数据。即MVC中的JsonResult可能更适合于值列表而不是带有不带分隔符的数字的字符串。
附注2:要获得正确的“一年中的某一天”,请使用不同的构造函数和AddDays:
new DateTime(nicole.Year,1,1).AddDays(i-1);
答案 3 :(得分:0)
我知道这不是你问题的答案,但也许这就是你要做的事情:
var year = DateTime.Now.Year;
var ci = System.Threading.Thread.CurrentThread.CurrentCulture;
var nicole = new DateTime(year, 1, 1);
while (nicole.Year == year)
{
response.write(ci.Calendar.GetWeekOfYear(nicole, ci.DateTimeFormat.CalendarWeekRule, ci.DateTimeFormat.FirstDayOfWeek));
nicole = nicole.AddDays(1);
}