时间处理 - Joda
核心类
- DateTime 包含日期和时间
- LocalDateTime 使用本地时区的日期和时间
- LocalDate 使用本地时区的日期
- LocalTime 使用本地时区的时间
- DateTimeFormat 一个工厂类,专门生成具体的格式化类
- DateTimeFormatter 具体的格式化类,提供了print方法将DateTime转换为字符串
- Period 计算两个时间之间的差
- Years 只关心年的时间差计算类
- Months 只关心月的时间差计算类
获取当前时间
包含日期和时间
// 特别说明:now方法源码就是new一个DateTime对象并返回
DateTime dateTime1 = DateTime.now();DateTime dateTime2 = new DateTime();LocalDateTime localDateTime = LocalDateTime.now();LocalDateTime localDateTime1 = new LocalDateTime();
只包含日期
LocalDate localDate1 = LocalDate.now();LocalDate localDate1 = new LocalDate();
只包含时间
LocalTime localTime1 = LocalTime.now();LocalTime localTime1 = new LocalTime();
三者相互转换
DateTime dateTime = new DateTime(1995, 2, 5, 12, 30);LocalDate date = dateTime.toLocalDate();LocalTime time = dateTime.toLocalTime();DateTime newDateTime = DateTime.now().withDate(date).withTime(time);
获取指定时间
包含日期和时间
// 年 月 日 时 分 秒
DateTime dateTime1 = new DateTime(2018,1,6,12,56,0);LocalDateTime localDateTime = new LocalDateTime(2018,1,6,12,56,0);
只包含日期
LocalDate localDate1 = new LocalDate(2018,12,12);
只包含时间
LocalTime localTime1 = new LocalTime(12,32,21);
格式化时间(时间对象 = > 字符串)
调用toString方法
DateTime dateTime = new DateTime(2018,1,6,12,56,0);
String dateTimeStr = dateTime.toString("yyyy-MM-dd HH:mm:ss");
System.out.println(dateTimeStr );
使用格式化类
DateTime dateTime = new DateTime(2016,8,18,14,20);
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm");
String dateTimeStr = formatter.print(dateTime);
System.out.println(dateTimeStr);
解析字符串(字符串 => 时间对象)
使用格式化类
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String dateTimeStr = "2017-09-01 23:21:22";
DateTime dateTime = formatter.parseDateTime(dateTimeStr);
System.out.println(dateTime);
Joda => JDK
toDate方法
DateTime dateTime = DateTime.now();
Date jdkDate = dateTime.toDate();
System.out.println(jdkDate);
JDK => Joda
构造函数
DateTime dateTime1 = new DateTime(new Date());DateTime dateTime2 = new DateTime(Calendar.getInstance());LocalDateTime localDateTime1 = new LocalDateTime(new Date());LocalDateTime localDateTime2 = new LocalDateTime(Calendar.getInstance());LocalDate localDate1 = new LocalDate(new Date());LocalDate localDate2 = new LocalDate(Calendar.getInstance());LocalTime localTime1 = new LocalTime(new Date());LocalTime localTime2 = new LocalTime(Calendar.getInstance());
fromDateFields方法
LocalDateTime.fromDateFields(new Date());LocalDate.fromDateFields(new Date());LocalDate.fromDateFields(new Date());
fromCalendarFields方法
LocalDateTime.fromCalendarFields(Calendar.getInstance());LocalDate.fromCalendarFields(Calendar.getInstance());LocalTime.fromCalendarFields(Calendar.getInstance());
获取和设置时间
getXXX 获取时间信息 返回值均为int
DateTime dateTime = DateTime.now();System.out.println("年 : " + dateTime.getYear());System.out.println("月 : " + dateTime.getMonthOfYear());System.out.println("日 : " + dateTime.getDayOfMonth());System.out.println("时 : " + dateTime.getHourOfDay());System.out.println("分 : " + dateTime.getMinuteOfHour());System.out.println("秒 : " + dateTime.getSecondOfMinute());System.out.println("毫秒 : " + dateTime.getMillisOfSecond());// 特别说明:1就是星期一 2就是星期二 以此类推 7就是星期天
System.out.println("星期几 : " + dateTime.getDayOfWeek());
withXXX 设置时间 返回值均为DateTime
不过,需要注意的是,DateTime是不可变类,修改操作是通过创建并返回新对象来实现的,原对象本身不会变。
DateTime dateTime = DateTime.now();System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
//修改年份为2017年
System.out.println(dateTime.withYear(2017).toString("yyyy-MM-dd HH:mm:ss"));
//修改月份为12月
System.out.println(dateTime.withMonthOfYear(12).toString("yyyy-MM-dd HH:mm:ss"));
//修改天数为当月12号
System.out.println(dateTime.withDayOfMonth(12).toString("yyyy-MM-dd HH:mm:ss"));
调整时间为下午3点20
DateTime dateTime = new DateTime();
dateTime = dateTime.withHourOfDay(15).withMinuteOfHour(20);
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
三小时五分钟后
DateTime dateTime = new DateTime().plusHours(3).plusMinutes(5);
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
下周二上午10点整
DateTime dateTime = new DateTime().plusWeeks(1).withDayOfWeek(2).withMillisOfDay(0).withHourOfDay(10);
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
获取当天的0点
//withMillisOfDay直接设置当天毫秒信息,会同时将时分秒等信息进行修改。
DateTime.now().withMillisOfDay(0);
明天最后一刻
millisOfDay()的返回值比较特别,它是一个属性,具体类为DateTime的一个内部类Property,这个属性代表当天毫秒信息,这个属性有一些方法,可以接着对日期进行修改,withMaximumValue就是将该属性的值设为最大值。
DateTime dateTime = new DateTime().plusDays(1).millisOfDay().withMaximumValue();
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
返回值为Property的方法
yearOfCentury
dayOfYear
monthOfYear
dayOfMonth
dayOfWeek
本月最后一天最后一刻
DateTime dateTime = new DateTime().dayOfMonth().withMaximumValue().millisOfDay().withMaximumValue();
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
下个月第一个周一的下午5点整
new DateTime().plusMonths(1).dayOfMonth().withMinimumValue()
将时间设为了下个月的第一天
plusDays(6).withDayOfWeek(1)将时间设为第一个周一
一个星期中只有 1 + 6 <= 7
plusDays(6) 如果这个月的第一个星期没有星期一的话,那么加上6天日期一定会在这个月的第二星期范围内,第二个星期一定会有星期一
withDayOfWeek(1) 设置为当前星期的第一天,即星期一
DateTime dateTime = new DateTime().plusMonths(1).dayOfMonth().withMinimumValue().plusDays(6).withDayOfWeek(1).withMillisOfDay(0).withHourOfDay(17);
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
获取当前日期为星期几
DateTime dateTime = DateTime.now();
String str1 = dateTime.dayOfWeek().getAsShortText(Locale.ENGLISH); //Thu
String str2 = dateTime.dayOfWeek().getAsShortText(Locale.CHINA); //星期几
String str4 = dateTime.dayOfWeek().getAsText(Locale.CHINA); //星期几
String str3 = dateTime.dayOfWeek().getAsString(); //6
时间相关计算
plusXXX 时间相加 返回值均为DateTime
不过,需要注意的是,DateTime是不可变类,修改操作是通过创建并返回新对象来实现的,原对象本身不会变。
DateTime dateTime = DateTime.now();// 当前时间
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));// 加上2年
System.out.println(dateTime.plusYears(2).toString("yyyy-MM-dd HH:mm:ss"));//加上12个月
System.out.println(dateTime.plusMonths(12).toString("yyyy-MM-dd HH:mm:ss"));//加上22天
System.out.println(dateTime.plusDays(22).toString("yyyy-MM-dd HH:mm:ss"));//加上2个星期
System.out.println(dateTime.plusWeeks(2).toString("yyyy-MM-dd HH:mm:ss"));
minusXXX 时间相减 返回值均为DateTime
不过,需要注意的是,DateTime是不可变类,修改操作是通过创建并返回新对象来实现的,原对象本身不会变。
DateTime dateTime = DateTime.now();// 当前时间
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));// 减去2年
System.out.println(dateTime.minusYears(2).toString("yyyy-MM-dd HH:mm:ss"));// 减去12个月
System.out.println(dateTime.minusMonths(12).toString("yyyy-MM-dd HH:mm:ss"));// 减去22天
System.out.println(dateTime.minusDays(22).toString("yyyy-MM-dd HH:mm:ss"));// 减去2个星期
System.out.println(dateTime.minusWeeks(2).toString("yyyy-MM-dd HH:mm:ss"));
计算两个时间之间的差
Period 类(存在bug,数据不准确)
DateTime start = new DateTime(2016,8,18,10,58);
DateTime end = new DateTime(2016,9,19,12,3);Period period = new Period(start,end);System.out.println(period.getMonths()+"月"+period.getDays()+"天"
+period.getHours()+"小时"+period.getMinutes()+"分");
只关心年 Years类
类似的还有只关心月、只关心日、以此类推
DateTime born = new DateTime(1995, 2, 5, 12, 30);int age = Years.yearsBetween(born, DateTime.now()).getYears();System.out.println(age);
时间处理 - Joda相关推荐
- Java-小技巧-004-jdk时间,jdk8时间,joda,calendar,获取当前时间前一周、前一月、前一年的时间...
1.推荐使用java8 localdate等 线程安全 支持较好 地址 2.joda 一.简述 查看SampleDateFormat源码,叙述有: * Date formats are not syn ...
- Java的时间类库joda教程
使用原生Java操作时间是比较麻烦的,比如说简单的创建一个指定时间 String time = "2018-7-3 11:00:00"; SimpleDateFormat sdf ...
- java 获取当前日期时间_Java 获取当前日期时间
Java 当前日期时间教程介绍了各种 Java 类,以获取 Java 中的当前日期时间. 有几种方法可以获取 Java 中的当前日期和时间. Java 程序员可以使用 Java 8(java.time ...
- 盘点 20多种基本Java库和API,值得收藏!
今天给大家收集的一些有用的第三方库,Java开发人员应该掌握,欢迎收藏! 1.单元测试库[JUnit和Mockito] 单元测试是将普通开发人员与优秀开发人员区分开的最重要的事情.经常为程序员提供不编 ...
- java calendar类_Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目,常用的项目如下 BeanUtils 提供了一系列对java bean的操作,读取和设置属性值等 map和bean的互相转换 我们 ...
- 【读书笔记】《代码不朽》
[<代码不朽>读书笔记] 第一章:简介 "简单"原则: 对每次提交负责. 第二章:函数要短 [要求]<=15行 [做法] 提取方法 替换为方法对象 第三章:逻辑分 ...
- Java8新特性——Date Time API
文章目录 前言 Date Time API 1.Java 8以前日期时间API存在的问题 2.LocalDate/LocalTime/LocalDateTime 3.获取对象的方法 4.获取相关的方法 ...
- Elasticsearch 7.x版本重大改变(Breaking changes in 7.x)
Breaking changes in 7.0 This section discusses the changes that you need to be aware of when migrati ...
- java joda 获取utc时间_java – 使用JodaTime以毫秒为单位的UTC到本地时间
我试图使用Jodatime显示特定时间段内的交易. 我们的服务器要求开始日期和结束日期为UTC(这可能是显而易见的).因此,围绕它们的任何业务逻辑都使用DateTime对象,时区设置为DateTime ...
最新文章
- UIMenuController的使用,对UILabel拷贝以及定制菜单
- WINDOWS渗透与提权总结(1)
- python pandas读取csv_Python3 pandas怎么读取csv文件的第一行的
- 捕获异常_Recover捕获异常
- Python小白的数学建模课-05.0-1规划
- linux的服务文件,Linux的nfs文件服务
- 【NLP】HuggingFace BERT 微博评论情感分类
- 【技能】excel小技巧:利用宏制作工资条
- 编写一个简单的JavaScript模板引擎
- 绿联 蓝牙适配器 linux,绿联USB
- 固态硬盘坏了数据能恢复吗?(已解决)
- 【鼠标右键点击桌面图标时,出现资源管理器未响应】
- 关于tomcat下startup.bat双击闪退的问题
- java 怎样设置文本域的字体颜色_java的JTextArea中怎么改变字体颜色
- request无法获取到前端发送的form表单数据
- 华为python自动化测试框架_10个自动化测试框架,测试工程师用起来
- oracle验证公民身份号码
- 2036——改革春风吹满地
- 四川水利职业技术学院计算机在哪里,四川水利职业技术学院地址在哪里
- cin.ignore()的用法
热门文章
- Undefined symbols for architecture x86_64: in mac OS
- C/C++ 点和箭头操作符的区别
- 推荐几款电脑测试软件
- java红宝石是哪本_AES Java编码,红宝石解码
- 计算机考试工作表怎么做表格步骤,计算机考试Excel表格中换行的方法
- 大数据处理系统都有哪些?(批处理系统与迭代计算系统)
- 数字时代,企业如何选择适合自己的转型平台?
- win10 无法访问samba文件,提示SMB1是不安全协议解决方案
- 想在美国开餐厅?想招人?顶级餐饮经营锦囊,300个餐饮人等你来撩!
- day13课后总结App