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. Nginx惊群问题

    Nginx惊群问题 "惊群"概念 所谓惊群,可以用一个简单的比喻来说明: 一群等待食物的鸽子,当饲养员扔下一粒谷物时,所有鸽子都会去争抢,但只有少数的鸽子能够抢到食物, 大部分鸽子 ...

  2. 封装的PKPM BimView的方法

    封装的方法 var ObvApiWrapper; if (!ObvApiWrapper) { ObvApiWrapper = {}; } ObvApiWrapper = function(build, ...

  3. error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法

    1 问题还原 这里我有三个源文件:Base.hpp, Base.cpp 和 main.cpp 在Base.hpp里面定义一个基类,注意,基类只包含构造函数和析构函数的声明,函数在Base.cpp里实现 ...

  4. 关于vue-svg-icon的使用方式

    前言 工作中用到svg格式的图标,既然是svg,当然不想用古老的img方式引用,希望能凭借定义svg的fill属性,随意定义图标的颜色:同时不想将整段svg代码写入组建内,于是找到了使用vue-svg ...

  5. 将Centos7的yum配置为阿里云的镜像(完美解决yum下载太慢的问题)

    2017-02-17 16:02:30 张老湿 阅读数 13768     http://mirrors.aliyun.com/help/centos?spm=5176.bbsr150321.0.0. ...

  6. oracle命令行导出、导入dmp文件

    1.导出语句: exp test/test@127.0.0.1:1521/orcl file=d:\gpmgt.dmp full=n: 导出test用户数据库对象,full=n表示默认只导出test用 ...

  7. php数组,常量,遍历等

    php常量,常量是不能被改变的,由英文字母,下划线,和数字组成,但是数字不能作为首字母出现. bool define ( string $name , mixed $value [, bool $ca ...

  8. angularcli 第一篇(新建、组件、模块)

    1.新建并启动项目: 1.安装: npminstall -g @angular/cli 2.新建: ng new mytest 3.进入项目:cd mytest 4.启动: ng serve 5.打开 ...

  9. HDFS重启集群导致数据损坏,使用fsck命令修复过程

    HDFS重启集群导致数据损坏,使用fsck命令修复过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们先看一组输出 [root@flume112 ~]# hdfs fsck / ...

  10. ssh本机失败(ssh: connect to host localhost port 22: Connection refused)

    ssh本机失败(ssh: connect to host localhost port 22: Connection refused) 一. 问题描述 之前一直在服务上使用宝塔面板, 今天突发奇想, ...