V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwertyzzz
V2EX  ›  程序员

突然想知道那种一年的第几周 是按什么计算的

  •  
  •   qwertyzzz ·
    123 · 2021-08-24 20:41:43 +08:00 · 3287 次点击
    这是一个创建于 1190 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    18 条回复    2021-08-26 11:49:04 +08:00
    qiyon
        1
    qiyon  
       2021-08-24 21:00:39 +08:00   ❤️ 1
    yehoshua
        2
    yehoshua  
       2021-08-24 21:07:03 +08:00 via Android
    大部分应该是按照一年第一个周日那天开始算第一周。安卓的谷歌日历中有个设置显示周数。打开这个功能就会在日历显示当前第几周。
    qwertyzzz
        3
    qwertyzzz  
    OP
       2021-08-24 21:13:12 +08:00
    @qiyon @yehoshua 那今天到底是今年的第几周啊。。我看有的是第 34 周 有的是第 35 周
    qiyon
        4
    qiyon  
       2021-08-24 21:33:03 +08:00 via iPhone
    @qwertyzzz 按国际标准的话,是第 34 周
    ysicing
        5
    ysicing  
       2021-08-24 21:39:01 +08:00
    ➜ ~ date +%W
    34
    elfive
        6
    elfive  
       2021-08-24 21:41:42 +08:00 via iPhone
    有的是第一个周日开始算第一周;
    有的是第一个周一开始算;
    还有的是跨年度的那周如果有 3 天及以上在这个年度,则这一周为第一周,否则这周算上个年度的最后一周,下周才开始计算本年度第一周。
    qwertyzzz
        7
    qwertyzzz  
    OP
       2021-08-24 21:44:39 +08:00
    yehoshua
        8
    yehoshua  
       2021-08-24 22:04:27 +08:00 via Android
    @qwertyzzz 有个国际标准,1 楼发的那个。算出来的结果应该就是那几个程序算的一样。但是实际上日历大都可以自己设置每周开始日期,周六周日周一三个都可以选,所以可能有点小出入。
    Jooooooooo
        9
    Jooooooooo  
       2021-08-24 22:09:43 +08:00
    你把第几周的定义描述清楚都好说

    就是定义问题
    gdfsjunjun
        10
    gdfsjunjun  
       2021-08-24 22:19:36 +08:00
    其实我更想知道,时间戳转换成日期的具体原理(代码)
    chengyiqun
        11
    chengyiqun  
       2021-08-25 00:01:55 +08:00
    @gdfsjunjun
    看 jdk 源码 GregorianCalendar
    private int getWeekNumber(long fixedDay1, long fixedDate)
    private int computeFields(int fieldMask, int tzMask)

    写的比较复杂..
    nbweb
        12
    nbweb  
       2021-08-25 08:52:56 +08:00
    跨年的话,周四在哪边,就算哪边的。
    nbweb
        13
    nbweb  
       2021-08-25 08:53:57 +08:00
    也就是说,有周四的才是第一周,上一年有周四的是啊后一周。
    keyfunc
        14
    keyfunc  
       2021-08-25 09:19:46 +08:00
    跨月的话怎么算?某一周的前几天在上月,后面几天在本月,这周算哪月的?
    Variazioni
        15
    Variazioni  
       2021-08-25 09:39:37 +08:00
    每月的第一个周日算这个月的第一周。。
    gam2046
        16
    gam2046  
       2021-08-25 10:28:31 +08:00
    @keyfunc 集合 A 是否属于集合 B,当 A 不属于 B 的子集时,这就看“属于”的定义,因此和楼上各位一样,这个问题本身定义问题。只要定义明确了,就不是问题了
    vone
        17
    vone  
       2021-08-25 11:28:59 +08:00
    MySQL 第一个周一之前是第 0 周。
    imn1
        18
    imn1  
       2021-08-26 11:49:04 +08:00
    这个按标准来不难,问题是有些软件不按标准来,以元旦所在为第一周,或者以首个周日为第一周都有
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3285 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:16 · PVG 20:16 · LAX 04:16 · JFK 07:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.