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. java之struts2之文件下载

    1.在实际应用开发中,文件下载功能也非常常见. 2.最简单的文件下载方式是通过超链接来进行文件下载: <body> <a href="download/s.txt" ...

  2. UCOSIII内嵌信号量

    不仅能够简化代码,而且比使用独立的信号量更有效 API函数 //等待-1 OS_SEM_CTR OSTaskSemPend (OS_TICK timeout, OS_OPT opt, CPU_TS * ...

  3. IOS SDK详解

    来源:http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html?page=1#42803301 博客专栏>移动开发专栏>I ...

  4. AI人脸识别SDK接入 — 参数优化篇(虹软)

    引言 使用了虹软公司免费的人脸识别算法,感觉还是很不错的,当然,如果是初次接触的话会对一些接口的参数有些疑问的.这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux.andro ...

  5. python进程不能并行的原因,进程阻塞

    上图红色框的写法进程会阻塞,并不能实现多进程.这种写法不需要调用start方法也会执行. 注意:正常写法是上图红框下面的代码,即可实现多进程.

  6. 挂载nfs提示:mount.nfs: access denied by server while mounting...

    出现此类错误原因大致为: 权限问题 防火墙机制问题 共享配置文件问题 搭建好nfs服务后,在client端进行挂载时,提示: [root@web1 media]# mount -t nfs 192.1 ...

  7. python(列表函数)

    一.列表函数 1.sort()原址排序 参数默认reverse=False时为正序排序 list1 = [1,3,5,2,1,23,18] list1.sort() print (list1) 当参数 ...

  8. SQL SERVER-SSMS安装联机丛书 book online

    1.下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=42557 2.解压. 3.在SSMS中添加引用. 选择解压路径找到ms ...

  9. Android笔记(六十一)动态添加组件

    想要一个功能,点击按钮,可以在已有的布局上,新添加一组组件. 动态的创建组件,本质上还是创建组件,只不过是在程序中根据逻辑来创建.大致步骤是找到要创建控件的位置,然后将要创建的组件添加进去. 看代码: ...

  10. urllib模块中parse函数中的urlencode和quote_plus方法

    本来只是向看一下quote_plus的作用,然后发现urlencode方法也是很方便的一个组合字符串的方法首先是介绍一下urlencode,他是将一些传入的元素使用&串联起来,效果如下: &g ...