ISO8601自然周

自然周的标准很多。其中以ISO8601 为准。

可以看到一年的第一个自然周应当满足:

  • 有第一个星期四
  • 包含1月4号
  • 第一个自然周应当有4个或者4个以上的天数
  • 这个星期开始的时间(即周一)在去年的12月29号(星期一)到今年的1月4号之间

所以如果1月1号是周一、周二、周三或者周四,它属于第一个自然周,如果不是,他属于去年的52周或者53周。

mysql week()获取自然周


这里我们可以看week传入两个参数,一个是日期,一个是模式。模式分为表中的几种,默认是0。在表中有一句话“with 4 or more days this year,”代表该模式遵循的是ISO标准。在mysql中更为常用的是
WEEKOFYEAR(date) 函数,实际上也等价于WEEK(date,3).

java8 localdate 获取自然周

java8对时间类型的支持和joda非常相似,但是比joda还要开放。所以标准就很重要,希望大家能理解一下上面ISO标准。

java8对自然周的支持主要体现java.time.temporal.WeekFields 这个类中。
其初始化有几种方式,这里讲两种,第一种是WeekFields.of(DayOfWeek firstDayOfWeek, int minimalDaysInFirstWeek)

WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY,4);

第一个参数代表周是按周几开始,第二个是限定第一个自然周最少要几天。结合ISO标准我们应当像上面那样进行初始化。

第二种方式是:WeekFields weekFields1 = WeekFields.ISO; 这样。查看源码发现:public static final WeekFields ISO = new WeekFields(DayOfWeek.MONDAY, 4); 调用了内部私有的构造方法。实际上和第一种大同小异。

具体实现获取

 LocalDate localDate1 = LocalDate.now();WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY,4);return localDate.get(weekFields.weekOfWeekBasedYear());

这里的return返回的就是符合ISO标准的自然周。当然关于weekfieldsd的初始化我更加推荐第二种。

另外weekFields的有两个获取自然周的实例方法weekOfYear()和weekOfWeekBasedYear()他们的差异当weekOfYear()第一周少于最小天数时会返回0,另一个则是返回1或者去年的末尾周:

详见各API文档。如文章有错请各位大佬及时纠正,评论留言。

java localdate获取自然周相关推荐

  1. java8 LocalDate获取自然周的方法

    java8 LocalDate获取自然周的方法 最近在做项目的时候要获取日期所在月份的第几周,刚开始是使用localDate.of(ChronoField.ALIGNED_WEEK_OF_MONTH) ...

  2. PHP获取自然周始末时间

    之前做了一个项目做抽奖的,里面有个需求,每个用户每个自然周能抽中一次指定产品. 自然周指的是:从周一到周日算作一个自然周. 但是作为PHP中的lower,还是能力捉急,只好百度 还挺多的嘛!想也不想先 ...

  3. 获取自然周 自然月 区间

    public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");/*** @Descri ...

  4. 获取自然周;一年中总的周数,以及当前日期处于第几周

    https://dayjs.fenxianglu.cn/ 插件 主要代码: let year = dayjs().year() // 默认今年 let date = dayjs().format('Y ...

  5. PHP获取自然周日期(周一~周日)

    使用date()函数:PHP: date - Manual w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六) $time = time(); // 可设定日期$week_day_nu ...

  6. Java如何获取今天周几

    Map<Integer, String> weekMap = new HashMap<>(7);weekMap.put(1, "星期日");weekMap. ...

  7. java 获取当前时间所在自然周起止时间及自然周中的每一天

    有的时候需要获取当前时间所在自然周中的起始和截止时间,或者某个时间段内里的每一天的日期 1.先来解决获取自然周中的起止时间 /*** 获取当前时间所在自然周的起止日期** @return*/publi ...

  8. Calendar自然周

    java中Calendar类获取的自然周是从周日到周六,但是我们理解的一周是从周一到周日.所以依然使用Calendar记录weekOfYear,dayOfWeek会有两个问题: 1.周日这一天,按照两 ...

  9. 获取某一年指定自然周的开始时间和结束时间

    获取某一年指定自然周的开始时间和结束时间 package com.playmath.playmathcrm.util; import java.text.ParseException; import ...

最新文章

  1. php redis安装使用
  2. 枚举类型的定义与使用
  3. 重启openstack服务_如何“ Kubernetize” OpenStack服务
  4. eclipse安装Android模拟器genymotion及其插件
  5. oracle初级系列教程
  6. Ajax到底是什么?
  7. 我新浪的免费邮箱这段时间总是登不上去或是不稳定
  8. iOS软件开发揭密:iPhoneiPad企业应用和游戏开发(china-pub首发)
  9. HIVE 面试题总结
  10. Petalinux EMMC启动
  11. 打造最美HTML5 3D机房(第三季新增资产管理、动环监控)
  12. JAVA/JS针对常见的字符数据处理的一个总结(JS截取字符串,判断是否包含某个字符串及它出现的次数;JAVA数据四舍五入,去掉科学计数法,截取特定符号之前或之后的数据)
  13. 解决导入MySQL数据库提示“Unknown character set: ‘utf8mb4‘“错误
  14. webpack4 搭建 Vue 开发环境笔记
  15. 计算机网络可靠传输是什么意思,可靠传输
  16. 【Vivado使用误区与进阶】XDC约束技巧之时钟篇
  17. js检测数据类型四种办法
  18. fastboot 模式下刷入Recovery
  19. Keras深度学习实战(36)——基于编码器-解码器的机器翻译模型
  20. 缺磷YNB (含硫酸铵,不含氨基酸)的成分

热门文章

  1. CDH集群搭建(CDH 6.0.1)
  2. 零基础怎么系统学习大数据?
  3. 英语学习——长难句01
  4. 小米盒子 改装 无线打印服务器,终于找到了“小米盒子增强版”不定期断网的bug了,2.4G模块bug!...
  5. 国家示范性高职院校名单(109所)
  6. unity如何插入图片_unity 图片导入及其使用方法
  7. jQuery笔记——工具函数——jQuery标志
  8. Airtest  入门
  9. 阿里投资分众,大战在即的电梯广告市场却有本糊涂账?
  10. linux文件扫描并打印,Linux办公一条龙—Linux中扫描、打印的实现