擅长:python、mysql、java
<p>你没有做错什么,<code>2013/12/30</code>在2014年的第一周,根据<a href="http://en.wikipedia.org/wiki/ISO_week_date" rel="noreferrer">ISO8601 week numbering standard</a>:</p>
<blockquote>
<p>The ISO 8601 definition for week 01 is the week with the year's first Thursday in it.</p>
</blockquote>
<p>那一周的星期四是2014年1月2日。</p>
<p>其他解释该定义的方法,来自同一篇链接的维基百科文章:</p>
<blockquote>
<ul>
<li>It is the first week with a majority (four or more) of its days in January (ISO weeks start on Monday)</li>
<li>Its first day is the Monday nearest to 1 January.</li>
<li>It has 4 January in it. Hence the earliest possible dates are 29 December through 4 January, the latest 4 through 10 January.</li>
<li>It has the year's first working day in it, if Saturdays, Sundays and 1 January are not working days.</li>
</ul>
</blockquote>
<p>如果您要查找给定年份的最后一周(52或53,具体取决于年份),我将使用12月28日,它始终保证在最后一周内(因为1月4日始终是下一年第一周的一部分):</p>
<pre><code>def lastweeknumber(year):
return datetime.date(year, 12, 28).isocalendar()[1]
</code></pre>