-2

我有一个提取日期信息的网络应用程序。我想要的是提取全年的周数。

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-

请帮忙!

4

4 回答 4

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);
于 2013-02-26T07:07:04.763 回答
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);
}
于 2013-02-26T07:20:27.513 回答
0

尝试写作

response.write(weekNo);

作为代码的最后一条语句。

于 2013-02-26T07:06:58.407 回答
0

我想你想要

response.write(weekNo); // not write(ci)

不要忘记添加某种分隔符。

旁注:根据您使用的框架(MVC?普通的 ASP.Net,其他),可能有更好的方法来返回结构化数据。即MVC 中的JsonResult可能比不带分隔符的数字字符串更适合值列表。

旁注2:要获得正确的“一年中的一天”,请使用不同的构造函数和AddDays

  new DateTime(nicole.Year,1,1).AddDays(i-1);
于 2013-02-26T07:09:14.910 回答