开源Java时间工具类Joda-Time体验

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import  org.joda.time.*;
import  org.joda.time.format.DateTimeFormat;
import  org.joda.time.format.DateTimeFormatter;
import  org.junit.Test;
 
import  java.util.Locale;
 
/**
  * @author by lei zhou on 2017/11/09 14:20.
  */
public  class  JodaTimeTest {
 
     @Test
     public  void  test() {
 
 
         // 日期输出格式
         DateTimeFormatter dateTimeFormat = DateTimeFormat.forPattern( "yyyy-MM-dd HH:mm:ss" );
 
         System.out.println( "当前日期时间: "  + DateTime.now().toString(dateTimeFormat));
         System.out.println( "当前日期但时间清0: "  + DateTime.now().withTimeAtStartOfDay().toString(dateTimeFormat));
         System.out.println( "本月第一个周日的日期时间: "  + getThisMonthFirstSunday().toString(dateTimeFormat));
         System.out.println( "本周周一的日期时间: "  + getThisWeekSunday().toString(dateTimeFormat));
         System.out.println( "距离元旦天数: "  + daysToNewYear(DateTime.now()));
         System.out.println( "距离元旦月数: "  + monthsToNewYear(DateTime.now()));
         System.out.println( "当前月份最后一天日期: "  +
                 DateTime.now().withDayOfMonth( 1 )
                         .monthOfYear().addToCopy( 1 )
                         .dayOfMonth().addToCopy(- 1 )
                         .withTimeAtStartOfDay()
                         .toString(dateTimeFormat));
 
         String[] french = DateTimeUtils.getDateFormatSymbols(Locale.FRANCE).getWeekdays();
         String[] japanese = DateTimeUtils.getDateFormatSymbols(Locale.JAPAN).getWeekdays();
         String[] korean = DateTimeUtils.getDateFormatSymbols(Locale.KOREA).getWeekdays();
 
         System.out.println( "今年每月第一天是周几: " );
         for  ( int  month =  1 ; month <=  12 ; month++) {
             DateTime monthDateTime = DateTime.now().withTimeAtStartOfDay().withMonthOfYear(month).withDayOfMonth( 1 );
             int  index = monthDateTime.dayOfWeek().get() %  7  1 ;
             System.out.println(monthDateTime.toString(DateTimeFormat.fullDateTime()) +  " 法语:"  + french[index] +  " 日语:"  + japanese[index] +  " 韩语:"  + korean[index]);
         }
 
         DateTime birthday = DateTime.parse( "1981-10-30 8:00:00" , dateTimeFormat);
         System.out.println( "距离出生已过去多少年: "  + Years.yearsBetween(birthday, DateTime.now()).getYears());
         System.out.println( "距离出生已过去多少天: "  + Days.daysBetween(birthday, DateTime.now()).getDays());
         System.out.println( "距离出生已过去多少分钟: "  + Minutes.minutesBetween(birthday, DateTime.now()).getMinutes());
     }
 
     private  int  monthsToNewYear(DateTime fromDate) {
         DateTime newYear = fromDate.plusYears( 1 ).withDayOfYear( 1 );
         return  Months.monthsBetween(fromDate, newYear).getMonths();
     }
 
     private  int  daysToNewYear(DateTime fromDate) {
         DateTime newYear = fromDate.plusYears( 1 ).withDayOfYear( 1 );
         return  Days.daysBetween(fromDate, newYear).getDays();
     }
 
     private  DateTime getThisMonthFirstSunday() {
         return  DateTime.now().withDayOfMonth( 1 ).withDayOfWeek(DateTimeConstants.SUNDAY);
     }
 
     private  DateTime getThisWeekSunday() {
         return  DateTime.now().withDayOfWeek(DateTimeConstants.MONDAY);
     }
}

输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
当前日期时间: 2017-11-09 16:47:37
当前日期但时间清0: 2017-11-09 00:00:00
本月第一个周日的日期时间: 2017-11-05 16:47:37
本周周一的日期时间: 2017-11-06 16:47:37
距离元旦天数: 53
距离元旦月数: 1
当前月份最后一天日期: 2017-11-30 00:00:00
今年每月第一天是周几: 
2017年1月1日 星期日 上午12时00分00秒 CST 法语:dimanche 日语:日曜日 韩语:
2017年2月1日 星期三 上午12时00分00秒 CST 法语:mercredi 日语:水曜日 韩语:
2017年3月1日 星期三 上午12时00分00秒 CST 法语:mercredi 日语:水曜日 韩语:
2017年4月1日 星期六 上午12时00分00秒 CST 法语:samedi 日语:土曜日 韩语:
2017年5月1日 星期一 上午12时00分00秒 CST 法语:lundi 日语:月曜日 韩语:
2017年6月1日 星期四 上午12时00分00秒 CST 法语:jeudi 日语:木曜日 韩语:
2017年7月1日 星期六 上午12时00分00秒 CST 法语:samedi 日语:土曜日 韩语:
2017年8月1日 星期二 上午12时00分00秒 CST 法语:mardi 日语:火曜日 韩语:
2017年9月1日 星期五 上午12时00分00秒 CST 法语:vendredi 日语:金曜日 韩语:
2017年10月1日 星期日 上午12时00分00秒 CST 法语:dimanche 日语:日曜日 韩语:
2017年11月1日 星期三 上午12时00分00秒 CST 法语:mercredi 日语:水曜日 韩语:
2017年12月1日 星期五 上午12时00分00秒 CST 法语:vendredi 日语:金曜日 韩语:
距离出生已过去多少年: 36
距离出生已过去多少天: 13159
距离出生已过去多少分钟: 18949487

本文转自   zl1030   51CTO博客,原文链接:http://blog.51cto.com/zl1030/1980326
相关文章
|
2月前
|
SQL 监控 数据可视化
完全开源!国内首个完全开源JAVA企业级低代码平台
JeeLowCode 是一款专为企业打造的 Java 企业级低代码开发平台,通过五大核心引擎(SQL、功能、模板、图表、切面)和四大服务体系(开发、设计、图表、模版),简化开发流程,降低技术门槛,提高研发效率。平台支持多端适配、国际化、事件绑定与动态交互等功能,广泛适用于 OA、ERP、IoT 等多种管理信息系统,帮助企业加速数字化转型。
|
6天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
54 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
2月前
|
SQL 监控 数据可视化
完全开源!国内首个完全开源JAVA企业级低代码平台
JeeLowCode 是一款专为企业打造的 Java 企业级低代码开发平台,通过五大核心引擎(SQL、功能、模板、图表、切面)和四大服务体系(开发、设计、图表、模版),简化开发流程,降低技术门槛,提高研发效率。平台支持多端适配、国际化、事件绑定与动态交互等功能,广泛适用于 OA、ERP、IoT 等多种管理信息系统,帮助企业加速数字化转型。
完全开源!国内首个完全开源JAVA企业级低代码平台
|
3月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
161 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
3月前
|
Java
Java 些许公共工具类
Java 些许公共工具类
20 1
|
5月前
|
缓存 前端开发 Java
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
【8月更文挑战第10天】java基础巩固,工具类的封装
31 1
|
5月前
|
Java
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
|
5月前
|
机器学习/深度学习 存储 缓存
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
|
5月前
|
存储 设计模式 安全
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
73 0
|
6月前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
72 1