【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP
缘起
前面有个需求,获取当前月和前5个月的最后一天,网上找了一下基本都是jdk7以前的,但实际上jdk8中有更简单的获取方式。
public static void main(String[] args) {for (int i = 0;i<6;i++){LocalDate today = LocalDate.now().minusMonths(i);//本月的第一天LocalDate firstday = LocalDate.of(today.getYear(),today.getMonth(),1);//本月的最后一天LocalDate lastDay =today.with(TemporalAdjusters.lastDayOfMonth());System.out.println(firstday.getMonth().getValue()+"月");System.out.println("最后一天:"+lastDay.getDayOfMonth());System.out.println("-------------------");}
}
输出
2月
最后一天:28
1月
最后一天:31
12月
最后一天:31
11月
最后一天:30
10月
最后一天:31
9月
最后一天:30
其中minusMonths(n)为获取当前时间的前N个月,对应的还有获取前N天前N年等方法。下面列出一份完整的API
LocalDateAPI
获取LocalDate
1.获取当前的日期 LocalDate
LocalDate now = LocalDate.now();
2.根据年月日的值获取 LocalDate
LocalDate.of(2016, 11, 30);
3.根据某年的第n天获取 LocalDate
LocalDate.ofYearDay(2016, 300)
4.从时间纪元(1970年1月1日)开始第n天(负数表示在时间纪元前n天)获取 LocalDate
LocalDate.ofEpochDay(365);
操作LocalDate
LocalDate.now().getYear(); // 年份
LocalDate.now().getMonthValue(); // 月份(数值表示, 从1开始)
LocalDate.now().getMonth(); // 月份(英文[enum]表示)
LocalDate.now().getDayOfMonth(); // 日期(从1开始)
LocalDate.now().getDayOfYear(): // 当天所在这一年的第几天(从1开始)
LocalDate.now().getDayOfWeek(); // 星期几
LocalDate.now().lengthOfYear(); // 当年的天数
LocalDate.now().lengthOfMonth(); //当月的天数
LocalDate.now().toEpochDay(); // 与时间纪元(1970年1月1日)相差的天数,负数表示在时间纪元之前多少天
LocalDate运算
可以对年、月、日、周进行加减法运算:
如果加(或减)日期超过当月的最大天数(或小于等于0)则月份对应增加(或减少);
如果加(或减)月份超过12(或小于等于0)则年份对应增加(或减少);
加减周数其实是对日期(天数)的加减;
1.加法
System.out.println(“加法运算”);
System.out.println(“当前:” + LocalDate.now());
System.out.println(“加1天:” + LocalDate.now().plusDays(1));
System.out.println(“加1周:” + LocalDate.now().plusWeeks(1));
System.out.println(“加1月:” + LocalDate.now().plusMonths(1));
System.out.println(“加1年:” + LocalDate.now().plusYears(1));
2.减法
System.out.println(“减法运算”);
System.out.println(“当前:” + LocalDate.now());
System.out.println(“减1天:” + LocalDate.now().minusDays(1));
System.out.println(“减1周:” + LocalDate.now().minusWeeks(1));
System.out.println(“减1月:” + LocalDate.now().minusMonths(1));
System.out.println(“减1年:” + LocalDate.now().minusYears(1));
3.替换
所有的数值必须合法;
如果当月当天是闰年2月29日,替换年份为非闰年,则会变成2月28日;
System.out.println("当前:" + LocalDate.now());
System.out.println("替换日期为1:" + LocalDate.now().withDayOfMonth(1));
System.out.println("替换天数为1:" + LocalDate.now().withDayOfYear(1));
System.out.println("替换月份为1:" + LocalDate.now().withMonth(1));
System.out.println("替换年份为1:" + LocalDate.now().withYear(1));
LocalDate判断
可以对两个 LocalDate 进行比较,可以判断一个日期是否在另一个日期之前或之后,或者判断两个日期是否是同年同月同日。
System.out.println(“当天:” + LocalDate.now());
System.out.println(“是否在当天之前:” + LocalDate.now().minusDays(1).isBefore(LocalDate.now()));
System.out.println(“是否在当天之后:” + LocalDate.now().plusDays(1).isAfter(LocalDate.now()));
System.out.println(“是否在当天:” + LocalDate.now().isEqual(LocalDate.now()));
System.out.println(“今年是否是闰年:” + LocalDate.now().isLeapYear());
LocalDate转换
可以把LocalDate转换自己想要的格式
localDate.format(DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”));
TemporalAdjusters
这个类可以获取第一天第一年最后一天最后一年等信息
【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP相关推荐
- java时间设置_JAVA中的时间操作
java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...
- python中csv文件操作_python中操作csv文件
python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...
- 在linux中的vi中的删除操作,linux中vi和vim操作
一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...
- js获取一个月份最大天数和获取月的最后一天
代码如下: <html xmlns=http://www.w3.org/1999/xhtml > <head> <title>标题页</tit ...
- Oracle中获取文件中的数据,操作oracle中的数据文件
收藏于http://dev.yesky.com/296/8090796.shtml Oracle数据库 中管理表空间和数据文件 数据库的三大组成部分:数据文件,控制文件,Redo日志. 表空间分为系统 ...
- java datediff_JAVA中的时间操作(附DATEDIFF函数用法)
http://blog.csdn.net/lujiancs/article/details/7043760 //字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格 ...
- mysql中所有时间类型_MySQL 中的日期时间类型
INSERT INTO todo (title,created_on) VALUES ('blah','2019-09-31'); ERROR 1292 (22007): Incorrect date ...
- oracle中数据文件创建,操作oracle中的数据文件
收藏于http://dev.yesky.com/296/8090796.shtml Oracle数据库 中管理表空间和数据文件 数据库的三大组成部分:数据文件,控制文件,Redo日志. 表空间分为系统 ...
- c语言中把时间拷到字符串中,C语言中将日期和时间以字符串格式输出的方法
ctime()函数:头文件: #include 定义函数: char *ctime(const time_t *timep); 函数说明:ctime()将参数timep 所指的time_t 结构中的信 ...
最新文章
- oracle 提示:ORA-02292:integrity constraint(xxxxxxx) violated - child record found
- linux c 运行命令 popen 简介
- 生成sql 脚本没有索引
- tuxedo文件ubbconfig配置说明
- 服务器后还有一系列留后门,服务器留隐蔽后门
- 波士顿房价预测python决策树_机器学习·波士顿房价预测模型
- 我的矩阵分析学习安排
- 猫/路由器/网关/交换机的作用与区别
- 天堂2单机版服务器维护,天堂2芙蕾雅服务端单机版(l2jAngel-CT2.6芙蕾雅-34)
- 抖音快手直播如何快速粘粉涨粉,直播话术新人必备【干货】
- 计算机上怎么在表格输入分秒,excel2010中如何设置分秒格式显示单元格或数据?...
- 抖音短视频如何快速制作?抖音怎么赚钱?
- 分享关于网站跳出率需要控制在多少
- linux 谷歌浏览器设置代理_Linux系统下Firefox浏览器SSH代理服务器脚本及设置方法...
- 解决微信端无法使用window.open打开文件的问题
- PYTHON实现迅雷、FLASHGET、QQ旋风转真实链接、磁链转种子文件、迅雷快传链接抓取
- H5案例分享:html5移动开发细微之美
- 实现微信机器人开发,个微api
- 信息安全实训系统php源码,实训平台
- 离网型风力发电机与并网型风力发电机之间的区别
热门文章
- 使用 SQL Server Management Studio (SSMS) 连接 SQL Server实例
- spring boot多数据源配置(mysql,redis,mongodb)实战
- Linux 进程管理剖析--转
- anroid 图片处理加载对比(image loader,Picasso ,glide,fresco)
- 【项目实战】多场景下的图表可视化表达
- Error: ENOSPC: System limit for number of file watchers reached, watch'所在文件路径'
- Hyperledger Besu企业以太坊快速教程
- sensor曝光量和曝光行的区别_4个要点,告诉你拼多多新的产品怎么增加曝光量!...
- 三、【线性表】线性表概述
- jvm性能调优 - 17案例实战_每日上亿请求量的电商系统 老轻代垃圾回收参数如何优化