2016-07-08 9 views
0

내가 세 가지 다른 컴퓨터에서이 코드를 시도 잘못된 주 번호를 반환하고 오늘의 주 번호 (28) 점점 계속 : I (28) 이유는 무엇입니까GetWeekOfYear는

Dim myCI As New CultureInfo("en-US") 

Dim myCal As System.Globalization.Calendar = myCI.Calendar 
Dim myCWR As CalendarWeekRule = myCI.DateTimeFormat.CalendarWeekRule 

Dim myFirstDOW As DayOfWeek = myCI.DateTimeFormat.FirstDayOfWeek 
Dim week As Integer = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW) 

그것은 27를 반환해야합니까?

+0

(27)에이 설정 (오늘 - 2016년 7월 7일). 왜 27 세가되어야한다고 생각하는지 설명해 주시겠습니까? – Blackwood

+0

올해는 ** 토요일 **부터 시작하여 2016 년 7 월 7 일은 28 주입니다. ** 전체 ** 주를 계산합니까? 주 수는 ** 1 ** 기준입니다. –

답변

1

내 컴퓨터에서 나는 EN-US 문화에 대해 다음 값을 얻을 :

myCWR = FirstDay 
myFirstDOW = Sunday 
week = 28 (with DateTime.Today = July 7, 2016) 

이 올바른 것입니다.CalendarWeekRule.FirstDay과 DayOfWeek.Sunday를 Calendar.GetWeekOfYear으로 전달하면 1 월 1 일 이후 2016 년 1 월 3 일 첫 번째 일요일에 2 번째 주를 시작할 것이라고이 방법에 알립니다. 따라서 1 주차에는 2 일 밖에 걸리지 않습니다.

에 관계없이이에 떨어질 것을 요일 월 8 일에 시작하는 주 2 싶은 경우에, 당신은 GetWeekOfYear에 (동등 또는 년 1 월 1 일) 년 1 월 8 요일을 통과해야합니다 :

Dim myFirstDOW As DayOfWeek = New DateTime(DateTime.Now.Year, 1, 1).DayOfWeek 
Dim week As Integer = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW) 

나뿐만 아니라 (28)를 얻을 수 week