2013-02-26 20 views
-2

我有一個Web應用程序提取有關日期的信息。我想要的是提取全年的週數。日期時間不顯示星期編號

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

你想打印'weekNo'嗎?你顯然正在打印當前的文化...... – Kobi 2013-02-26 07:05:27

+2

我看到你的代碼有幾個問題,1.在本週中,你總是得到相同日期的週數'new DateTime(nicole.Year,nicole.Month,nicole.Day ),'。你正在做一個'response.write(ci);'。如果不是'response.write(weekNo);' – ryadavilli 2013-02-26 07:06:14

+0

確實。您正在打印CultureInfo,而不是日期。你也創建365次相同的DateTime對象。 你究竟想要做什麼?打印出一年中每一天的星期數? – Corak 2013-02-26 07:08:24

回答

0

儘量寫作

response.write(weekNo);

作爲代碼的最後一個聲明。

1

你在寫ci - CultureInfo。 請嘗試寫入weekNo。那將是表示本週的整數。雖然它會在一行中寫入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

+1。將1-365值傳遞爲「每月中的某一天」是錯誤的並導致異常 - 請使用「AddDays」。 – 2013-02-26 07:36:22

+0

感謝您的收穫。根據你的建議修正它。 – 2013-02-26 15:06:04

0

我想你想

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

不要忘了添加某種隔板。注意:根據您使用的框架(MVC?普通ASP.Net,其他),可能有更好的方法來返回結構化數據。即MVC中的JsonResult可能比數字列表更適合數值列表,而數字不帶分隔符。

邊注2:得到正確「今年的日子」使用不同的構造函數和AddDays

new DateTime(nicole.Year,1,1).AddDays(i-1); 
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); 
} 
+0

謝謝你所有的答案:)我的愚蠢的錯誤。對不起 :)) – user1954418 2013-02-26 07:21:17