Java 日期工具类(日期,月份加减等)--转
- package util;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- /***
- * 日期工具类
- *
- * @author damao
- *
- */
- public class DateAndTimeUtil {
- /***
- * 日期月份减一个月
- *
- * @param datetime
- * 日期(2014-11)
- * @return 2014-10
- */
- public static String dateFormat(String datetime) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
- Date date = null;
- try {
- date = sdf.parse(datetime);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- Calendar cl = Calendar.getInstance();
- cl.setTime(date);
- cl.add(Calendar.MONTH, -1);
- date = cl.getTime();
- return sdf.format(date);
- }
- public static String dateFormat(Date date) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
- return sdf.format(date);
- }
- /****
- * 传入具体日期 ,返回具体日期减一个月。
- *
- * @param date
- * 日期(2014-04-20)
- * @return 2014-03-20
- * @throws ParseException
- */
- public static String subMonth(String date) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date dt = sdf.parse(date);
- Calendar rightNow = Calendar.getInstance();
- rightNow.setTime(dt);
- rightNow.add(Calendar.MONTH, -1);
- Date dt1 = rightNow.getTime();
- String reStr = sdf.format(dt1);
- return reStr;
- }
- /****
- * 获取月末最后一天
- *
- * @param sDate
- * 2014-11-24
- * @return 30
- */
- private static String getMonthMaxDay(String sDate) {
- SimpleDateFormat sdf_full = new SimpleDateFormat("yyyy-MM-dd");
- Calendar cal = Calendar.getInstance();
- Date date = null;
- try {
- date = sdf_full.parse(sDate + "-01");
- } catch (ParseException e) {
- e.printStackTrace();
- }
- cal.setTime(date);
- int last = cal.getActualMaximum(Calendar.DATE);
- return String.valueOf(last);
- }
- // 判断是否是月末
- public static boolean isMonthEnd(Date date) {
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- if (cal.get(Calendar.DATE) == cal
- .getActualMaximum(Calendar.DAY_OF_MONTH))
- return true;
- else
- return false;
- }
- /***
- * 日期减一天、加一天
- *
- * @param option
- * 传入类型 pro:日期减一天,next:日期加一天
- * @param _date
- * 2014-11-24
- * @return 减一天:2014-11-23或(加一天:2014-11-25)
- */
- public static String checkOption(String option, String _date) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Calendar cl = Calendar.getInstance();
- Date date = null;
- try {
- date = (Date) sdf.parse(_date);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- cl.setTime(date);
- if ("pre".equals(option)) {
- // 时间减一天
- cl.add(Calendar.DAY_OF_MONTH, -1);
- } else if ("next".equals(option)) {
- // 时间加一天
- cl.add(Calendar.DAY_OF_YEAR, 1);
- } else {
- // do nothing
- }
- date = cl.getTime();
- return sdf.format(date);
- }
- /***
- * 判断日期是否为当前月, 是当前月返回当月最小日期和当月目前最大日期以及传入日期上月的最大日和最小日
- * 不是当前月返回传入月份的最大日和最小日以及传入日期上月的最大日和最小日
- *
- * @param date
- * 日期 例如:2014-11
- * @return String[] 开始日期,结束日期,上月开始日期,上月结束日期
- * @throws ParseException
- */
- public static String[] getNow_Pre_Date(String date) throws ParseException {
- String[] str_date = new String[4];
- Date now = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
- SimpleDateFormat sdf_full = new SimpleDateFormat("yyyy-MM-dd");
- String stMonth = sdf.format(now);
- String stdate = "";// 开始日期
- String endate = "";// 结束日期
- String preDate_start = "";// 上月开始日期
- String preDate_end = "";// 上月结束日期
- // 当前月
- if (date.equals(stMonth)) {
- stdate = stMonth + "-01"; // 2014-11-01
- endate = sdf_full.format(now);// 2014-11-24
- preDate_start = subMonth(stdate);// 2014-10-01
- preDate_end = subMonth(endate);// 2014-10-24
- } else {
- // 非当前月
- String monthMaxDay = getMonthMaxDay(date);
- stdate = date + "-01";// 2014-10-01
- endate = date + "-" + monthMaxDay;// 2014-10-31
- preDate_start = subMonth(stdate);// 2014-09-01
- preDate_end = subMonth(endate);// 2014-09-30
- }
- str_date[0] = stdate;
- str_date[1] = endate;
- str_date[2] = preDate_start;
- str_date[3] = preDate_end;
- return str_date;
- }
- public static void main(String[] args) throws ParseException {
- /*
- * String a =DateAndTimeUtil.dateFormat(new Date());
- * System.out.println(a); String b =
- * DateAndTimeUtil.subMonth("2014-03-31"); System.out.println(b);
- * SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date
- * dt=sdf.parse("2014-03-31");
- * System.out.println(DateAndTimeUtil.isMonthEnd(dt));
- */
- String str = null;
- // str = DateAndTimeUtil.checkOption("next", "2014-11-30");
- // str = getMonthMaxDay("2014-11-24");
- // str = dateFormat("2014-11");
- str = getNow_Pre_Date("2014-10")[0];
- System.out.println(str);
- }
- }
Java 日期工具类(日期,月份加减等)--转的更多相关文章
- java工具类-日期工具类
1.获得时间戳 为了统一其他语言的如php和unix系统获取的时间戳是10位长度的,精确到秒. java时间戳长度是13位,精确到毫秒 我们获取时间戳需要相应处理. //获取当前时间戳,除以1000, ...
- java日期工具类DateUtil
一名优秀的程序员,不仅需要有着丰富解决问题的方案,还需要的便是代码的沉淀,这不仅有助于自己快速的开发程序,也有利于保证程序的健壮.那如何才能沉淀自己的”代码“呢?从自己编写util开始其实就是一个不错 ...
- java 日期工具类
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...
- 日期工具类 - DateUtil.java
日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- java 日期工具类DateUtils
日期工具类DateUtils CreateTime--2017年5月27日08:48:00Author:Marydon DateUtils.java-对日期类的进一步封装 import java. ...
- java日期工具类DateUtil-续一
上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...
- java日期工具类DateUtil-续二
该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...
- Java获取上周,本周,本月,本年,开始结束时间 。日期工具类
由于获取日期经常会使用到,所有我自己写了一个工具类 1.基本上能用上的都写出来了,包括:1)获取当天的开始时间 2)获取当天的结束时间 3)获取昨天的开始时间 4)获取昨天的结束时间 5)获取明天的开 ...
随机推荐
- golang--获取进程ID(windows)
package main import ( "fmt" "strconv" "syscall" "unsafe" ) t ...
- 74.js---移动端文章的瀑布流的实现。
移动端文章的瀑布流的实现. 1.首先在前端html页面已经通过PHP代码循环完全数据. 2.然后在js先全部隐藏,通过判断滑动到底部,每次加载一部分数据,直到数据全部显示完全. js代码: // ...
- Androidx初尝及其新旧包对照表
x的最低实验条件 AndroidStudio 3.2.0+ gradle:gradle-4.6以上 本次实验条件: AndroidStudio 3.3 (强制要求最低gradle版本为gradle-4 ...
- 修正DejalActivityView在iOS8之前系统上存在的Bug
DejalActivityView是国外的第三方库,可自定义文本内容和文本长度的菊花转加载指示器效果.该第三方库与其它hud存在不同,能够遮盖键盘:可以自定义遮盖NavigationBar或不遮盖Na ...
- Linux命令cut
原文 cut 文件内容查看 显示行中的指定部分,删除文件中指定字段 显示文件的内容,类似于下的type命令. 说明 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将 ...
- 阿里云ECS服务器设置端口(允许访问设置)
1.登录阿里云找到对应的服务器按照如下箭头指示: 2.点击“安全组配置”后进入到如下界面,点击“配置规则”进入详情配置界面. 3.点击“修改”可对特定的端口进行访问配置,如下图: 至此结束.
- Linux查找工具locate和find
linux 中有很多查找工具,今天主要讲解locate,find两个工具. 一.locate 1.性能介绍 非实时查找(数据库查找):locate 查询系统上预建的文件索引数据库 /var/lib/m ...
- [S32K]FreeRTOS使用
参考官方: Tutorial: FreeRTOS 10.0.1 with NXP S32 Design Studio 2018.R1 (官方component是V8.2.1,此文档介绍如何升级到V10 ...
- 使用Cloudera Manager搭建Kudu环境
使用Cloudera Manager搭建Kudu环境 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.点击添加服务进入CM服务安装向导 2>.选择需要安装的kudu ...
- 华为云和开源Istio运维管理对比样例应用部署
前言 在公有云方面,华为云已经率先将 Istio 作为产品投入到公有云中进行商业应用中,保持和开源istio高度兼容,做了商业化的运维管理界面,同时进行了性能优化.这里我们做一次验证测试. Booki ...