Java日期计算常用方法《简述版》

简介: Java日期计算常用方法《简述版》

Java日期计算常用方法《简述版》


引入依赖


<dependency>  
        <groupId>joda-time</groupId>  
        <artifactId>joda-time</artifactId>  
        <version>2.9.2</version>  
    </dependency>  


1、获取简单日期


    //方法一:取系统点间  
    DateTime dt1 = new DateTime();  
    //方法二:通过java.util.Date对象生成  
    DateTime dt2 = new DateTime(new Date());  
    //方法三:指定年月日点分秒生成(参数依次是:年,月,日,时,分,秒,毫秒)  
    DateTime dt3 = new DateTime(2012, 5, 20, 13, 14, 0, 0);  
    //方法四:ISO8601形式生成  
    DateTime dt4 = new DateTime("2012-05-20");  
    DateTime dt5 = new DateTime("2012-05-20T13:14:00");  
    //只需要年月日的时候  
    LocalDate localDate = new LocalDate(2021, 9, 1);// September 1, 2021 
    //只需要时分秒毫秒的时候  
    LocalTime localTime = new LocalTime(13, 14, 26, 0);// 1:14:26PM  


2、获取年月日点分秒


    DateTime dt = new DateTime();  
    //年  
    int year = dt.getYear();  
    //月  
    int month = dt.getMonthOfYear();  
    //日  
    int day = dt.getDayOfMonth();  
    //星期  
    int week = dt.getDayOfWeek();  
    //点  
    int hour = dt.getHourOfDay();  
    //分  
    int min = dt.getMinuteOfHour();  
    //秒  
    int sec = dt.getSecondOfMinute();  
    //毫秒  
    int msec = dt.getMillisOfSecond();  


3、星期的特殊处理


    DateTime dt = new DateTime();  
    //星期  
    switch(dt.getDayOfWeek()) {  
    case DateTimeConstants.SUNDAY:  
        System.out.println("星期日");  
        break;  
    case DateTimeConstants.MONDAY:  
        System.out.println("星期一");  
        break;  
    case DateTimeConstants.TUESDAY:  
        System.out.println("星期二");  
        break;  
    case DateTimeConstants.WEDNESDAY:  
        System.out.println("星期三");  
        break;  
    case DateTimeConstants.THURSDAY:  
        System.out.println("星期四");  
        break;  
    case DateTimeConstants.FRIDAY:  
        System.out.println("星期五");  
        break;  
    case DateTimeConstants.SATURDAY:  
        System.out.println("星期六");  
        break;  
    }  


4、与JDK日期对象的转换


    DateTime dt = new DateTime();  
    //转换成java.util.Date对象  
    Date d1 = new Date(dt.getMillis());  
    Date d2 = dt.toDate();  
    //转换成java.util.Calendar对象  
    Calendar c1 = Calendar.getInstance();  
    c1.setTimeInMillis(dt.getMillis());  
    Calendar c2 = dt.toCalendar(Locale.getDefault());  


5、日期前后推算


    DateTime dt = new DateTime();  
    //明天  
    DateTime tomorrow = dt.plusDays(1);   
    //昨天  
    DateTime yesterday = dt.minusDays(1);        
    //1个月前  
    DateTime before1month = dt.minusMonths(1);        
    //3个月后  
    DateTime after3month = dt.plusMonths(3);          
    //2年前  
    DateTime before2year = dt.minusYears(2);          
    //5年后  
    DateTime after5year = dt.plusYears(5); 


6、取特殊日期


    DateTime dt = new DateTime();     
    //月末日期    
    DateTime lastday = dt.dayOfMonth().withMaximumValue();  
    //90天后那周的周一  
    DateTime firstday = dt.plusDays(90).dayOfWeek().withMinimumValue();  


7、时区


    //默认设置为日本时间  
    DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo"));  
    DateTime dt1 = new DateTime();  
    //伦敦时间  
    DateTime dt2 = new DateTime(DateTimeZone.forID("Europe/London"));


8、计算区间


    DateTime begin = new DateTime("2021-01-02");  
    DateTime end = new DateTime("2021-01-01");  
    //计算区间毫秒数  
    Duration d = new Duration(begin, end);  
    long time = d.getMillis();  
    //计算区间天数  
    Period p = new Period(begin, end, PeriodType.days());  
    int days = p.getDays();  
    //计算特定日期是否在该区间内  
    Interval i = new Interval(begin, end);  
    boolean contained = i.contains(new DateTime("2021-01-01"));  


9、日期比较


    DateTime d1 = new DateTime("2021-01-01");  
    DateTime d2 = new DateTime("2021-01-01");  
    //和系统时间比  
    boolean b1 = d1.isAfterNow();  
    boolean b2 = d1.isBeforeNow();  
    boolean b3 = d1.isEqualNow();  
    //和其他日期比  
    boolean f1 = d1.isAfter(d2);  
    boolean f2 = d1.isBefore(d2);  
    boolean f3 = d1.isEqual(d2); 


10、格式化输出


    DateTime dateTime = new DateTime();  
    String s1 = dateTime.toString("yyyy/MM/dd hh:mm:ss.SSSa");  
    String s2 = dateTime.toString("yyyy-MM-dd HH:mm:ss");  
    String s3 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");  
    String s4 = dateTime.toString("yyyy/MM/dd HH:mm ZZZZ");  
    String s5 = dateTime.toString("yyyy/MM/dd HH:mm Z");  


目录
打赏
0
0
0
0
723
分享
相关文章
|
18天前
|
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
46 25
|
12天前
|
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
21 1
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
|
26天前
|
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
47 5
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
1月前
|
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
202 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
1月前
|
java.time常用方法汇总
`java.time` API 是从 Java 8 开始引入的时间日期处理库,旨在替代老旧的 `java.util.Date` 和 `Calendar`。它提供了更简洁、强大和灵活的方式处理日期、时间、时区及时间间隔,支持全球化和时间计算需求。API 包含获取当前时间、创建指定时间、解析和格式化字符串、进行加减运算、比较时间、获取年月日时分秒、计算时间间隔、时区转换以及判断闰年等功能。示例代码展示了如何使用这些功能,极大简化了开发中的时间处理任务。
|
1月前
|
Java计算时间差
这段代码提供了两个方法来计算时间差。`timeDistance` 方法接收两个 `Date` 对象,计算并返回两者之间的天数、小时数和分钟数差异,格式为“X天Y小时Z分钟”。`hourDistance` 方法则接收两个时间字符串,解析后计算并返回两者之间相差的小时数(向上取整)。
48 4
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
111 9
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等