是从 1 月 1 号开始 每七天算一个周 还是从星期一到星期日算一个周 不足的算一个周

ISO 周日历

zh.wikipedia.org/wiki/ISO%E9%80%B1%E6%97%A5%E6%9B%86

大部分应该是按照一年第一个周日那天开始算第一周。安卓的谷歌日历中有个设置显示周数。打开这个功能就会在日历显示当前第几周。

那今天到底是今年的第几周啊。。我看有的是第 34 周 有的是第 35 周

按国际标准的话,是第 34 周

➜ ~ date +%W
34

有的是第一个周日开始算第一周;
有的是第一个周一开始算;
还有的是跨年度的那周如果有 3 天及以上在这个年度,则这一周为第一周,否则这周算上个年度的最后一周,下周才开始计算本年度第一周。

3q
~

有个国际标准,1 楼发的那个。算出来的结果应该就是那几个程序算的一样。但是实际上日历大都可以自己设置每周开始日期,周六周日周一三个都可以选,所以可能有点小出入。

你把第几周的定义描述清楚都好说

就是定义问题

其实我更想知道,时间戳转换成日期的具体原理(代码)

看 jdk 源码 GregorianCalendar
private int getWeekNumber(long fixedDay1, long fixedDate)
private int computeFields(int fieldMask, int tzMask)

写的比较复杂..

跨年的话,周四在哪边,就算哪边的。

也就是说,有周四的才是第一周,上一年有周四的是啊后一周。

跨月的话怎么算?某一周的前几天在上月,后面几天在本月,这周算哪月的?

每月的第一个周日算这个月的第一周。。

集合 A 是否属于集合 B,当 A 不属于 B 的子集时,这就看“属于”的定义,因此和楼上各位一样,这个问题本身定义问题。只要定义明确了,就不是问题了

MySQL 第一个周一之前是第 0 周。

这个按标准来不难,问题是有些软件不按标准来,以元旦所在为第一周,或者以首个周日为第一周都有