1. package util;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. /***
  7. * 日期工具类
  8. *
  9. * @author damao
  10. *
  11. */
  12. public class DateAndTimeUtil {
  13. /***
  14. * 日期月份减一个月
  15. *
  16. * @param datetime
  17. *            日期(2014-11)
  18. * @return 2014-10
  19. */
  20. public static String dateFormat(String datetime) {
  21. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  22. Date date = null;
  23. try {
  24. date = sdf.parse(datetime);
  25. } catch (ParseException e) {
  26. e.printStackTrace();
  27. }
  28. Calendar cl = Calendar.getInstance();
  29. cl.setTime(date);
  30. cl.add(Calendar.MONTH, -1);
  31. date = cl.getTime();
  32. return sdf.format(date);
  33. }
  34. public static String dateFormat(Date date) {
  35. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  36. return sdf.format(date);
  37. }
  38. /****
  39. * 传入具体日期 ,返回具体日期减一个月。
  40. *
  41. * @param date
  42. *            日期(2014-04-20)
  43. * @return 2014-03-20
  44. * @throws ParseException
  45. */
  46. public static String subMonth(String date) throws ParseException {
  47. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  48. Date dt = sdf.parse(date);
  49. Calendar rightNow = Calendar.getInstance();
  50. rightNow.setTime(dt);
  51. rightNow.add(Calendar.MONTH, -1);
  52. Date dt1 = rightNow.getTime();
  53. String reStr = sdf.format(dt1);
  54. return reStr;
  55. }
  56. /****
  57. * 获取月末最后一天
  58. *
  59. * @param sDate
  60. *            2014-11-24
  61. * @return 30
  62. */
  63. private static String getMonthMaxDay(String sDate) {
  64. SimpleDateFormat sdf_full = new SimpleDateFormat("yyyy-MM-dd");
  65. Calendar cal = Calendar.getInstance();
  66. Date date = null;
  67. try {
  68. date = sdf_full.parse(sDate + "-01");
  69. } catch (ParseException e) {
  70. e.printStackTrace();
  71. }
  72. cal.setTime(date);
  73. int last = cal.getActualMaximum(Calendar.DATE);
  74. return String.valueOf(last);
  75. }
  76. // 判断是否是月末
  77. public static boolean isMonthEnd(Date date) {
  78. Calendar cal = Calendar.getInstance();
  79. cal.setTime(date);
  80. if (cal.get(Calendar.DATE) == cal
  81. .getActualMaximum(Calendar.DAY_OF_MONTH))
  82. return true;
  83. else
  84. return false;
  85. }
  86. /***
  87. * 日期减一天、加一天
  88. *
  89. * @param option
  90. *            传入类型 pro:日期减一天,next:日期加一天
  91. * @param _date
  92. *            2014-11-24
  93. * @return 减一天:2014-11-23或(加一天:2014-11-25)
  94. */
  95. public static String checkOption(String option, String _date) {
  96. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  97. Calendar cl = Calendar.getInstance();
  98. Date date = null;
  99. try {
  100. date = (Date) sdf.parse(_date);
  101. } catch (ParseException e) {
  102. e.printStackTrace();
  103. }
  104. cl.setTime(date);
  105. if ("pre".equals(option)) {
  106. // 时间减一天
  107. cl.add(Calendar.DAY_OF_MONTH, -1);
  108. } else if ("next".equals(option)) {
  109. // 时间加一天
  110. cl.add(Calendar.DAY_OF_YEAR, 1);
  111. } else {
  112. // do nothing
  113. }
  114. date = cl.getTime();
  115. return sdf.format(date);
  116. }
  117. /***
  118. * 判断日期是否为当前月, 是当前月返回当月最小日期和当月目前最大日期以及传入日期上月的最大日和最小日
  119. * 不是当前月返回传入月份的最大日和最小日以及传入日期上月的最大日和最小日
  120. *
  121. * @param date
  122. *            日期 例如:2014-11
  123. * @return String[] 开始日期,结束日期,上月开始日期,上月结束日期
  124. * @throws ParseException
  125. */
  126. public static String[] getNow_Pre_Date(String date) throws ParseException {
  127. String[] str_date = new String[4];
  128. Date now = new Date();
  129. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  130. SimpleDateFormat sdf_full = new SimpleDateFormat("yyyy-MM-dd");
  131. String stMonth = sdf.format(now);
  132. String stdate = "";// 开始日期
  133. String endate = "";// 结束日期
  134. String preDate_start = "";// 上月开始日期
  135. String preDate_end = "";// 上月结束日期
  136. // 当前月
  137. if (date.equals(stMonth)) {
  138. stdate = stMonth + "-01"; // 2014-11-01
  139. endate = sdf_full.format(now);// 2014-11-24
  140. preDate_start = subMonth(stdate);// 2014-10-01
  141. preDate_end = subMonth(endate);// 2014-10-24
  142. } else {
  143. // 非当前月
  144. String monthMaxDay = getMonthMaxDay(date);
  145. stdate = date + "-01";// 2014-10-01
  146. endate = date + "-" + monthMaxDay;// 2014-10-31
  147. preDate_start = subMonth(stdate);// 2014-09-01
  148. preDate_end = subMonth(endate);// 2014-09-30
  149. }
  150. str_date[0] = stdate;
  151. str_date[1] = endate;
  152. str_date[2] = preDate_start;
  153. str_date[3] = preDate_end;
  154. return str_date;
  155. }
  156. public static void main(String[] args) throws ParseException {
  157. /*
  158. * String a =DateAndTimeUtil.dateFormat(new Date());
  159. * System.out.println(a); String b =
  160. * DateAndTimeUtil.subMonth("2014-03-31"); System.out.println(b);
  161. * SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date
  162. * dt=sdf.parse("2014-03-31");
  163. * System.out.println(DateAndTimeUtil.isMonthEnd(dt));
  164. */
  165. String str = null;
  166. // str = DateAndTimeUtil.checkOption("next", "2014-11-30");
  167. // str = getMonthMaxDay("2014-11-24");
  168. // str = dateFormat("2014-11");
  169. str = getNow_Pre_Date("2014-10")[0];
  170. System.out.println(str);
  171. }
  172. }

Java 日期工具类(日期,月份加减等)--转的更多相关文章

  1. java工具类-日期工具类

    1.获得时间戳 为了统一其他语言的如php和unix系统获取的时间戳是10位长度的,精确到秒. java时间戳长度是13位,精确到毫秒 我们获取时间戳需要相应处理. //获取当前时间戳,除以1000, ...

  2. java日期工具类DateUtil

    一名优秀的程序员,不仅需要有着丰富解决问题的方案,还需要的便是代码的沉淀,这不仅有助于自己快速的开发程序,也有利于保证程序的健壮.那如何才能沉淀自己的”代码“呢?从自己编写util开始其实就是一个不错 ...

  3. java 日期工具类

    import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

  4. 日期工具类 - DateUtil.java

    日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...

  5. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  6. java 日期工具类DateUtils

      日期工具类DateUtils CreateTime--2017年5月27日08:48:00Author:Marydon DateUtils.java-对日期类的进一步封装 import java. ...

  7. java日期工具类DateUtil-续一

    上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...

  8. java日期工具类DateUtil-续二

    该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...

  9. Java获取上周,本周,本月,本年,开始结束时间 。日期工具类

    由于获取日期经常会使用到,所有我自己写了一个工具类 1.基本上能用上的都写出来了,包括:1)获取当天的开始时间 2)获取当天的结束时间 3)获取昨天的开始时间 4)获取昨天的结束时间 5)获取明天的开 ...

随机推荐

  1. 【简●解】[HNOI2005]星际贸易

    [大意] 太多了,懒得打,贴\(LG\)的图了... [分析] 开始拿到这道题有点慌:怎么限制条件这么多,再读读题. 注意一个东西,就是贸易额与费用是独立分开的,并且题目保证只有一种方案获得最大贸易额 ...

  2. oracle数据库 部分函数的用法

    select * from tab; //获取当前用户的数据库的所有表名 select sys_guid(),UserName from TESTLIKUI; //获取guid select sys_ ...

  3. 视觉AI风口一触即发,虹软AI沙龙点金深圳

    7月26日,虹软AI沙龙在深圳湾科技生态园空间举办.AI沙龙是基于虹软视觉开放平台的开发者交流沙龙,旨在通过分享最新的实战案例,帮助开发者解决技术及落地难题,让技术更贴近实用场景. 本次活动中,深圳市 ...

  4. MyBatis之Oracle、Mysql批量插入

    Mybatis中Dao层 public interface UsersMapper { public void insertEntitys(List<UserEntity> users); ...

  5. vue $refs操作DOM

    原文链接:https://www.cnblogs.com/xumqfaith/p/7743387.html 如图,ref 被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs 对象 ...

  6. Vue检测当前是否处于mock模式

    Vue检测当前是否处于mock模式 1.在main.js中声明全局变量: import Vue from 'vue' /* 全局变量 */ var GLOBAL_VARIABLE = { isMock ...

  7. windows nginx

    nginx.exe -s stop stop是快速停止nginx,可能并不保存相关信息: nginx.exe -s quit quit是完整有序的停止nginx,并保存相关信息. nginx.exe ...

  8. [ipsec][strongswan] strongswan源码分析--(一)SA整体分析

    strongswan SA分析(一) 1 概念 下面主要介绍两个本文将要阐述的核心概念.他们是SA和SP.注意,这不是一篇不需要背景知识的文章.作者认为你适合阅读接下来内容的的前提是,你已经具备了一下 ...

  9. Minio对象存储

    目录 Minio对象存储 1.概述 2.功能特性 3.2.多节点 3.3.分布式 4.分布式minio集群搭建 4.1.集群规划 4.3.编写集群启动脚本(所有节点) 4.4.编写服务脚本(所有节点) ...

  10. 使用 create-react-app 快速构建 React 开发环境

    在终端执行以下命令创建项目: 1.指定创建的项目位置(这里以桌面为例) cd Desktop 2.创建 React 项目 npx create-react-app my-app 3.进入项目并启动 c ...