博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java:取得当前日期一周之前/之后的日期,或者是一月之前/之后的日期
阅读量:4970 次
发布时间:2019-06-12

本文共 1111 字,大约阅读时间需要 3 分钟。

一. 旧的方式

参考以前的博客:

1. 需求

取得当前时间前一周的时间。比如说:今天是2009-4-23,运行结果则为:2009-4-16。

代码:一般人肯定会这样写:

String lastModified = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date((new java.util.Date().getTime() - 7*24*60*60*1000)));

表面上看结果是正确的。

2. 问题

如果想取得当前时间前一个月的时间,直接修改上面的7为30,形如:30 * 24 * 60 * 60 * 1000,结果肯定不是你想要的2009-3-24。而是2009-5-13,你没看错!

3. 原因

java日期的数值表达值为long类型的,应该用long型参数去做操作。7 * 24 * 60 * 60 * 1000默认为整型操作,它没有溢出;但30 * 24 * 60 * 60 * 1000对于整型来说是溢出的,变成负数,所以日期反而加大。

4. 解决

String lastModified = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date((new java.util.Date().getTime() - (long)30*24*60*60*1000)));

这样写就可以解决问题了。

二. 新的方式

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");    java.util.Calendar cal = java.util.Calendar.getInstance();    cal.setTime(sdf.parse("2009-4-23"));    cal.add(java.util.Calendar.DATE, -7); // 向前一周;如果需要向后一周,用正数即可//    cal.add(java.util.Calendar.MONTH, -1); // 向前一月;如果需要向后一月,用正数即可    System.out.println(sdf.format(cal.getTime()));

这样就可以取得一个月以前或者是一周以前的日期了。

转载于:https://www.cnblogs.com/nayitian/archive/2013/03/05/2943737.html

你可能感兴趣的文章
java之设计模式
查看>>
Oracle之Group by和Having-----转了
查看>>
未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项”的解决方法
查看>>
【Codeforces】964A Splits【数学题】
查看>>
Python Leetcode 验证回文字符串
查看>>
hadoop学习笔记贰 --HDFS及YARN的启动
查看>>
vs2017 EFCore 迁移数据库命令
查看>>
python实现接入图灵机器人
查看>>
c++ define的用法(转)
查看>>
SQL Server 按某一字段分组 取 最大 (小)值所在行的数据
查看>>
WPF Preview Excel,
查看>>
S8-codelab02
查看>>
Wowza 4.1开发环境配置(Window)
查看>>
概率期望总结
查看>>
php中的empty()方法
查看>>
OpenJ_Bailian 4118(dp)
查看>>
三、TortoiseGit之配置密钥
查看>>
Python----面向对象---绑定方法与非绑定方法
查看>>
java Thread
查看>>
[源码和文档分享]基于Android实现的页面置换模拟
查看>>