日期时间不显示周数

时间:2013-02-26 07:03:30

标签: c# datetime

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

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 个答案:

答案 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);
}