주어진 날짜의 정확한 주 번호를 얻으십시오


222

Google에 많은 도움을 받았고 많은 해결책을 찾았지만 아무도 2012-12-31의 정확한 주 번호를 제공하지 않습니다. MSDN의 예조차도 ( 링크 )도 실패합니다.

2012-12-31은 월요일이므로 1 주가되어야하지만 시도한 모든 방법은 53을 제공합니다. 다음은 시도한 방법 중 일부입니다.

MDSN 라이브러리에서 :

DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
Calendar cal = dfi.Calendar;

return cal.GetWeekOfYear(date, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);

해결책 2 :

return new GregorianCalendar(GregorianCalendarTypes.Localized).GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

해결책 3 :

CultureInfo ciCurr = CultureInfo.CurrentCulture;
int weekNum = ciCurr.Calendar.GetWeekOfYear(dtPassed, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
return weekNum;

최신 정보

다음 방법은 날짜가 2012-12-31 일 때 실제로 1을 반환합니다. 즉, 내 문제는 내 방법이 ISO-8601 표준을 따르지 않았다는 것입니다.

// This presumes that weeks start with Monday.
// Week 1 is the 1st week of the year with a Thursday in it.
public static int GetIso8601WeekOfYear(DateTime time)
{
    // Seriously cheat.  If its Monday, Tuesday or Wednesday, then it'll 
    // be the same week# as whatever Thursday, Friday or Saturday are,
    // and we always get those right
    DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
    if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
    {
        time = time.AddDays(3);
    }

    // Return the week of our adjusted day
    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}

4
연말 1 주차는 어떻습니까? 내 말은, 당신이 어디서 구했는지 봅니다. 그러나 53은 나에게 의미가 있습니다.
benjer3

1
내 코드 스 니펫에서 CultureInfo와 물건을 얻습니다. 나는 내 프로그램이 내가 사용하고있는 캘린더를 알고 있다고 생각했다. (여기 독일에서 2012 년 12 월 31 일은 2013 년 1 월 1 일입니다)
Amberlamps

이 날짜를 시도해야으로이 코드는 매우 작동하지 않습니다 (31) 12 월 - 2016 예 또는 1 - 1 월 2016
cavej03

@ cavej03 31-dec-2016은 52 주이며 GetIso8601WeekOfYear는 52를 반환하므로 제대로 작동한다고 생각합니다.
Muflix

답변:


311

MSDN 페이지에 언급 된 바와 같이 ISO8601 주와 .Net 주 번호 사이에는 약간의 차이가 있습니다.

더 자세한 설명을 보려면 MSDN 블로그에서이 기사를 참조하십시오. " Microsoft .Net의 ISO 8601 주간 형식 "

간단히 말해서, .Net은 몇 주에 걸쳐 몇 주 동안 분할 될 수 있지만 ISO 표준은 그렇지 않습니다. 이 기사에는 연도의 마지막 주에 올바른 ISO 8601 주 번호를 얻는 간단한 기능도 있습니다.

업데이트 다음 방법은 실제로 2012-12-31ISO 8601 (예 : 독일)에서 1을 반환합니다 .

// This presumes that weeks start with Monday.
// Week 1 is the 1st week of the year with a Thursday in it.
public static int GetIso8601WeekOfYear(DateTime time)
{
    // Seriously cheat.  If its Monday, Tuesday or Wednesday, then it'll 
    // be the same week# as whatever Thursday, Friday or Saturday are,
    // and we always get those right
    DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
    if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
    {
        time = time.AddDays(3);
    }

    // Return the week of our adjusted day
    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
} 

1
@il_guru 일주일이 일요일로 시작되기를 원한다면 어떻게해야합니까? 모든 "월요일"을 "일요일"로 바꾸나요?
2012384

2
@ User2012384 참고로, ISO8601 표준을 따르려면 firstDayOfWeek는 항상 월요일이어야합니다.
Starceaker

1
@il_guru이 "속임수"도 필요하지 않습니까? "GetWeekOfYear (time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);"라고 말할 수있는 한 잘 작동합니다.
Starceaker

2
두 번째 링크 (Microsoft .Net의 ISO 8601 Week of Year 형식)를 보면 Microsoft에서 직접 질문에 대한 답변을 찾을 수 있습니다. 예를 들면 2007 년 12 월 31 일 월요일입니다. .Net 함수를 사용하면 2007 년의 53 번째 주 번호를 반환하는 반면 ISO 표준의 경우 2008 년의 1 주 번호
il_guru

3
2012 년부터 2018 년까지 (epochconverter.com이 올바른 것으로 가정) 올바른지 수동으로 확인했습니다. 2018 년 1 월 1 일은 실제로 1 월 1 일에 한 번만 시작되었습니다.
Aidan

32

1 년에 52 주 이상이있을 수 있습니다. 매년 52 주 + 1 또는 +2 (윤년)이 추가됩니다. 그들은 53 주를 보충합니다.

  • 52 주 * 7 일 = 364 일

따라서 매년 최소한 하루가 더 있습니다. 윤년 2 년. 이 추가 일수는 별도의 주 단위로 계산됩니까?

몇 주가 실제로 시작하는지에 따라 다릅니다. 이것을 2012 년에 고려해 봅시다.

  • 미국 (일요일-> 토요일) : 52 주 + 2012-12-30 및 2012-12-31의 짧은 2 일 주. 총 53 주가 소요됩니다. 올해 마지막 2 일 (일요일 + 월요일)은 짧은 주를 구성합니다.

현재 문화권 설정을 확인하여 주중 첫날로 사용되는 것을 확인하십시오.

보시다시피 결과적으로 53을 얻는 것이 정상입니다.

  • 유럽 ​​(월요일-> 일요일) : 1 월 2dn (2012-1-2)이 첫 번째 월요일이므로 첫 주가 시작됩니다. 1 월 1 일의 주 번호를 물어 보면 2011 년 마지막 주에 포함 된 52 번을받습니다.

54 주가있을 수도 있습니다. 1 월 1 일과 12 월 31 일이 별도의 주로 취급되는 28 년마다 발생합니다. 윤년이어야합니다.

예를 들어 2000 년에는 54 주가있었습니다. 1 월 1 일 (토)은 첫 1 주일이었고 12 월 31 일 (일)은 두 번째 1 주일이되었습니다.

var d = new DateTime(2012, 12, 31);
CultureInfo cul = CultureInfo.CurrentCulture;

var firstDayWeek = cul.Calendar.GetWeekOfYear(
    d,
    CalendarWeekRule.FirstDay,
    DayOfWeek.Monday);

int weekNum = cul.Calendar.GetWeekOfYear(
    d,
    CalendarWeekRule.FirstDay,
    DayOfWeek.Monday);

int year = weekNum == 52 && d.Month == 1 ? d.Year - 1 : d.Year;
Console.WriteLine("Year: {0} Week: {1}", year, weekNum);

인쇄 : 년 : 2012 주 : 54

위의 예에서 CalendarWeekRule을 FirstFullWeek 또는 FirstFourDayWeek로 변경하면 53이 다시 나타납니다. 독일을 다루는 월요일부터 시작일을 유지합시다.

따라서 53 주차는 2012-12-31 월요일에 시작하여 하루가 지난 후 중단됩니다.

53이 정답입니다. 시도하고 싶다면 문화를 독일로 바꾸십시오.

CultureInfo cul = CultureInfo.GetCultureInfo("de-DE");

53 주가있을 수 있음을 알고 있습니다. 그러나 일요일 (12/30)과 월요일 (12/31)이있는 경우 미국의 53 주째 주에 화요일 (01/01)을 계산하지 않습니까?
Amberlamps 2012 년

나는 54 주를 본 적이 없다!
Amberlamps 2012 년

특정 회계 소프트웨어 패키지에는 패키지가 있습니다.
Christophe Geers

좋아, 나는 미국 캘린더에서 가능하다는 것을 알았지 만 독일 캘린더에서는 그렇지 않을 것입니다.
Amberlamps

1
문제에 대한 깊은 생각에 +1했지만 다른 답변으로 제공된 블로그 항목의 코드 스 니펫이 실제로 내 문제를 해결했습니다.
Amberlamps

22

이게 방법이야:

public int GetWeekNumber()
{
    CultureInfo ciCurr = CultureInfo.CurrentCulture;
    int weekNum = ciCurr.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
    return weekNum;
}

가장 중요한 것은 CalendarWeekRule매개 변수입니다.

여기를 참조하십시오 : https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=IT-IT&k=k(System.Globalization.CalendarWeekRule);k(TargetFrameworkMoniker-.NETFramework


3
"일부 사람들은 Calendar.GetWeekOfYear ()가 CalendarWeekRule.FirstFourDayWeek와 DayOfWeek.Monday를 통과 한 ISO 8601 주와 거의 같지만 약간 다릅니다. 특히 ISO 8601은 항상 7 일 주가 있습니다." blogs.msdn. microsoft.com/shawnste/2006/01/24/…
Juha Palomäki

1
귀하의 링크는 이탈리아어입니다
radbyx

새로운 DateTime (2000,12,31)의 경우 52 만 반환합니까?
Leszek P

18

좋은 소식! 풀 요청 추가System.Globalization.ISOWeek.NET Core에 이 병합되었으며 현재 3.0 릴리스로 예정되어 있습니다. 바라지 않는 미래에 다른 .NET 플랫폼으로 전파되기를 바랍니다.

유형에는 다음과 같은 서명이 있으며 대부분의 ISO 주 요구 사항을 충족해야합니다.

namespace System.Globalization
{
    public static class ISOWeek
    {
        public static int GetWeekOfYear(DateTime date);
        public static int GetWeeksInYear(int year);
        public static int GetYear(DateTime date);
        public static DateTime GetYearEnd(int year);
        public static DateTime GetYearStart(int year);
        public static DateTime ToDateTime(int year, int week, DayOfWeek dayOfWeek);
    }
}

소스 코드는 여기에서 찾을 수 있습니다 .

업데이트 :이 API는 2.1 버전의 .NET Standard 에도 포함 되었습니다 .


v 3.0이 언제 출시 될지 아십니까?
Jacques

"올해 말 .NET Core 3의 첫 미리보기와 2019 년의 최종 버전을 발표 할 계획입니다." ( 로드맵 블로그 게시물에서 )
khellang

@ khellang 날짜 시간을 기준으로 한 달에 서수 주를 어떻게 얻을 수 있습니까? 33 주차를받는 대신 2 주차를보고 싶습니다 (33 주차는 8 월 2 주차이므로). stackoverflow.com/questions/58039103/…
Roxy'Pro

11

정확한 ISO-8601 주 번호를 산출하는 .Net 문화가없는 것 같아서, 부분적으로 정확한 수정을 시도하는 대신 내장 주 결정을 우회하고 수동으로 계산을 수행하고 싶습니다. 결과.

내가 끝내었던 것은 다음 확장 방법입니다.

/// <summary>
/// Converts a date to a week number.
/// ISO 8601 week 1 is the week that contains the first Thursday that year.
/// </summary>
public static int ToIso8601Weeknumber(this DateTime date)
{
    var thursday = date.AddDays(3 - date.DayOfWeek.DayOffset());
    return (thursday.DayOfYear - 1) / 7 + 1;
}

/// <summary>
/// Converts a week number to a date.
/// Note: Week 1 of a year may start in the previous year.
/// ISO 8601 week 1 is the week that contains the first Thursday that year, so
/// if December 28 is a Monday, December 31 is a Thursday,
/// and week 1 starts January 4.
/// If December 28 is a later day in the week, week 1 starts earlier.
/// If December 28 is a Sunday, it is in the same week as Thursday January 1.
/// </summary>
public static DateTime FromIso8601Weeknumber(int weekNumber, int? year = null, DayOfWeek day = DayOfWeek.Monday)
{
    var dec28 = new DateTime((year ?? DateTime.Today.Year) - 1, 12, 28);
    var monday = dec28.AddDays(7 * weekNumber - dec28.DayOfWeek.DayOffset());
    return monday.AddDays(day.DayOffset());
}

/// <summary>
/// Iso8601 weeks start on Monday. This returns 0 for Monday.
/// </summary>
private static int DayOffset(this DayOfWeek weekDay)
{
    return ((int)weekDay + 6) % 7;
}

우선 ((int)date.DayOfWeek + 6) % 7), 요일 번호를 결정합니다 (0 = 월요일, 6 = 일요일).

date.AddDays(-((int)date.DayOfWeek + 6) % 7) 요청 된 주 번호를 선행하는 월요일 날짜를 결정합니다.

3 일 후 목표 목요일이 있으며, 그 주가 몇 년인지 결정합니다.

연도 내 (0부터 시작) 일수를 7 (내림차순)로 나누면 연도에서 0으로 표시되는 주 번호를 얻습니다.

C #에서 정수 계산 결과는 내재적으로 반올림됩니다.


1
이 방법은 지금까지 가장 좋은 해결책이지만 약간 다른 방법을 지적합니다. DateTime은 다발성 그레고리력을 기반으로합니다. 즉, 그레고리력을 1 년으로 다시 확장합니다. 0001 년 1 월 1 일은 월요일. Ticks0001 년 1 월 1 일 이후 100 나노초 단위의 수입니다. 하루에 86,400 초가 있다고 가정하면 다음과 같이 쓸 수 있습니다.var thursday = date.AddDays(3 - date.Ticks / 86400 / 10_000_000 % 7); return (thursday.DayOfYear - 1) / 7 + 1;
Adrian S

5

.NET 3.0 이상에서는 ISOWeek.GetWeekOfDate-Method를 사용할 수 있습니다 .

연도 + 주 번호 형식의 연도 DateTime는 연도 경계를 넘는 주 때문에 연도와 다를 수 있습니다 .


3

il_guru 에서 위 코드의 C #에서 Powershell 포트로 :

function GetWeekOfYear([datetime] $inputDate)
{
   $day = [System.Globalization.CultureInfo]::InvariantCulture.Calendar.GetDayOfWeek($inputDate)
   if (($day -ge [System.DayOfWeek]::Monday) -and ($day -le [System.DayOfWeek]::Wednesday))
   {
      $inputDate = $inputDate.AddDays(3)
   }

   # Return the week of our adjusted day
   $weekofYear = [System.Globalization.CultureInfo]::InvariantCulture.Calendar.GetWeekOfYear($inputDate, [System.Globalization.CalendarWeekRule]::FirstFourDayWeek, [System.DayOfWeek]::Monday)
   return $weekofYear
}

1
코드를 설명해 주시겠습니까? 코드 전용 답변은 일반적으로 StackOverflow에서 허용되지 않으므로 삭제 될 수 있습니다.
Wai Ha Lee

@Wai Ha Lee 코드는 이미 설명되어 있습니다. il_guru에서 위의 게시물을 참조하십시오. 나는 그의 코드를 powershell에 이식 했으므로 다른 사람들은 powershell에 좋은 해결책이 없기 때문에 powershell에서 사용할 수 있습니다.
Rainer

그것이 당신이 한 일이라면, 답변 자체에 원래의 저자를 인정해야합니다. 귀하가 포팅 한 답변에 귀하가 삭제했을 것으로 보이는 더 나은 의견이 있습니다. 또한 질문에 PowerShell이 ​​언급되어 있지 않기 때문에 질문에 대한 답변이 아닙니다.
Wai Ha Lee

1
나는 이제 @Wai Ha Lee를했다. 질문은 이미 답변 된 것으로 표시되어 있으므로 다른 언어로 작성된 동일한 솔루션이됩니다. Powershell 언어로 솔루션을 찾고있는 사람들에게 호의를 베 풀었습니다 (Powershell에서 솔루션을 열심히 찾고 있었지만 C #의 솔루션이었습니다). 아이디어는 동일하게 유지되며 저자는 아이디어를 얻습니다.
Rainer

2

c # 및 DateTime 클래스를 사용하여 주 번호 ISO 8601 스타일을 결정하는 가장 쉬운 방법입니다.

다음과 같이 질문하십시오. 올해의 How-Many-eth 목요일은 이번 주 목요일입니다. 답은 원하는 주 번호와 같습니다.

var dayOfWeek = (int)moment.DayOfWeek;
// Make monday the first day of the week
if (--dayOfWeek < 0)
    dayOfWeek = 6;
// The whole nr of weeks before this thursday plus one is the week number
var weekNumber = (moment.AddDays(3 - dayOfWeek).DayOfYear - 1) / 7 + 1;

1
var cultureInfo = CultureInfo.CurrentCulture;
var calendar = cultureInfo.Calendar;

var calendarWeekRule = cultureInfo.DateTimeFormat.CalendarWeekRule;
var firstDayOfWeek = cultureInfo.DateTimeFormat.FirstDayOfWeek;
var lastDayOfWeek = cultureInfo.LCID == 1033 //En-us
                    ? DayOfWeek.Saturday
                    : DayOfWeek.Sunday;

var lastDayOfYear = new DateTime(date.Year, 12, 31);

var weekNumber = calendar.GetWeekOfYear(date, calendarWeekRule, firstDayOfWeek);

 //Check if this is the last week in the year and it doesn`t occupy the whole week
return weekNumber == 53 && lastDayOfYear.DayOfWeek != lastDayOfWeek 
       ? 1  
       : weekNumber;

그것은 미국과 러시아 문화에서 잘 작동합니다. `러시아 주가 월요일에 시작하기 때문에 ISO 8601도 정확하다.


1

il_guru 의 확장 버전과 nullable 버전이 있습니다.

신장:

public static int GetIso8601WeekOfYear(this DateTime time)
{
    var day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
    if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
    {
        time = time.AddDays(3);
    }

    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}

널 입력 가능 :

public static int? GetIso8601WeekOfYear(this DateTime? time)
{
    return time?.GetIso8601WeekOfYear();
}

사용법 :

new DateTime(2019, 03, 15).GetIso8601WeekOfYear(); //returns 11
((DateTime?) new DateTime(2019, 03, 15)).GetIso8601WeekOfYear(); //returns 11
((DateTime?) null).GetIso8601WeekOfYear(); //returns null

0

문제는 주가 2012 년인지 2013 년인지를 어떻게 정의합니까? 귀하의 가정은 주 6 일이 2013 년이기 때문에 이번 주가 2013 년 첫 주로 표시되어야한다고 생각합니다.

이것이 올바른 방법인지 확실하지 않습니다. 그주는 2012 년 (12 월 31 일 월요일)에 시작되었으므로 2012 년 마지막 주로 표시되어야하므로 2012 년 53 일이됩니다. 2013 년 첫주는 7 일 월요일에 시작됩니다.

이제 요일 정보를 사용하여 특정 주 (예 : 첫 번째 및 마지막 주)를 처리 할 수 ​​있습니다. 그것은 모두 당신의 논리에 달려 있습니다.


좋아요, 요점을 볼 수 있습니다. 문제는 내 방법 중 하나에 2013/01/07을 사용할 때 2 주라고합니다. 따라서 2012/12/31은 53 주이고 2013/01/07은 2 주입니다. 1 주가 없다고 생각할 수도 있습니다. 하지만 2013/01/01을 시도하면 1 주일이라고합니다.
Amberlamps

0
  DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
  DateTime date1 = new DateTime(2011, 1, 1);
  Calendar cal = dfi.Calendar;

  Console.WriteLine("{0:d}: Week {1} ({2})", date1, 
                    cal.GetWeekOfYear(date1, dfi.CalendarWeekRule, 
                                      dfi.FirstDayOfWeek),
                    cal.ToString().Substring(cal.ToString().LastIndexOf(".") + 1));      

0

il_guru의 답변을 바탕으로 연도 구성 요소를 반환하는 내 필요에 맞게이 버전을 만들었습니다.

    /// <summary>
    /// This presumes that weeks start with Monday.
    /// Week 1 is the 1st week of the year with a Thursday in it.
    /// </summary>
    /// <param name="time">The date to calculate the weeknumber for.</param>
    /// <returns>The year and weeknumber</returns>
    /// <remarks>
    /// Based on Stack Overflow Answer: https://stackoverflow.com/a/11155102
    /// </remarks>
    public static (short year, byte week) GetIso8601WeekOfYear(DateTime time)
    {
        // Seriously cheat.  If its Monday, Tuesday or Wednesday, then it'll
        // be the same week# as whatever Thursday, Friday or Saturday are,
        // and we always get those right
        DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
        if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
        {
            time = time.AddDays(3);
        }
        // Return the week of our adjusted day
        var week = (byte)CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
        return ((short)(week >= 52 & time.Month == 1 ? time.Year - 1 : time.Year), week);
    }

0

이 두 가지 방법은 월요일에 주를 시작한다고 가정하면 도움이됩니다.

/// <summary>
    /// Returns the weekId
    /// </summary>
    /// <param name="DateTimeReference"></param>
    /// <returns>Returns the current week id</returns>
    public static DateTime GetDateFromWeek(int WeekReference)
    {
        //365 leap
        int DaysOffset = 0;
        if (WeekReference > 1)
        {
            DaysOffset = 7;
            WeekReference = WeekReference - 1;
        }
        DateTime DT = new DateTime(DateTime.Now.Year, 1, 1);
        int CurrentYear = DT.Year;
        DateTime SelectedDateTime = DateTime.MinValue;

        while (CurrentYear == DT.Year)
        {
            int TheWeek = WeekReportData.GetWeekId(DT);
            if (TheWeek == WeekReference)
            {
                SelectedDateTime = DT;
                break;
            }
            DT = DT.AddDays(1.0D);
        }

        if (SelectedDateTime == DateTime.MinValue)
        {
            throw new Exception("Please check week");
        }

        return SelectedDateTime.AddDays(DaysOffset);
    }
/// <summary>
    /// Returns the weekId
    /// </summary>
    /// <param name="DateTimeReference"></param>
    /// <returns>Returns the current week id</returns>
    public static int GetWeekId(DateTime DateTimeReference)
    {
        CultureInfo ciCurr = CultureInfo.InvariantCulture;
        int weekNum = ciCurr.Calendar.GetWeekOfYear(DateTimeReference,
        CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);
        return weekNum;
    }

-1

랩 연도 (52 x 7 = 364)의 경우 1 년은 52 주, 1 일 또는 2 일입니다. 2012-12-31은 53 주이며 2012 년은 랩 연도이므로 2 일밖에 걸리지 않습니다.


이것은 올바르지 않습니다. 연중 첫 번째 요일은주의 요일에 속할 수 있으며 주를 계산하는 방식에 따라 해당 연도의 54 주일 수 있습니다.
krowe2

-2
public int GetWeekNumber()
{
   CultureInfo ciCurr = CultureInfo.CurrentCulture;
   int weekNum = ciCurr.Calendar.GetWeekOfYear(DateTime.Now, 
   CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
   return weekNum;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.