2019独角兽企业重金招聘Python工程师标准>>>

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class DateUtil {/*** 比较日期大小* @param dateStr0* @param dateStr1* @return*/public static int compareDate(String dateStr0, String dateStr1) {Date date1 = convertDateStrToDate(dateStr0, "datetime");Date date2 = convertDateStrToDate(dateStr1, "datetime");int result = date1.compareTo(date2);return result;}/*** 格式化日期* @param date* @param pattern*       "date":返回日期(yyyy-MM-dd)*      "time":返回时间(HH:mm:ss)*        "datetime":返回日期和时间(yyyy-MM-dd HH:mm:ss)* @return*/public static String formatDate(Date date, String pattern) {if (date == null) {return "";}if ("date".equals(pattern)) {pattern = "yyyy-MM-dd";} else if ("time".equals(pattern)) {pattern = "HH:mm:ss";} else if ("datetime".equals(pattern)) {pattern = "yyyy-MM-dd HH:mm:ss";}SimpleDateFormat formatter = new SimpleDateFormat(pattern);return formatter.format(date);}/*** 格式化日期字符串* @param dateStr* @param type*        "date":返回日期(yyyy-MM-dd)*      "time":返回时间(HH:mm:ss)*        "datetime":返回日期和时间(yyyy-MM-dd HH:mm:ss)* @return*/public static String formatDate(String dateStr, String type) {if (dateStr == null || "".equals(dateStr.trim())) {return "";}DateFormat formatter = DateFormat.getDateInstance();Date date = null;try {date = formatter.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return formatDate(date, type);}/*** 把日期字符串转换成日期* @param dateStr*      日期字符串* @param pattern*         "date":日期,*       "datetime":日期和时间* @return*/public static Date convertDateStrToDate(String dateStr, String pattern) {if (dateStr == null || "".equals(dateStr.trim())) {return null;}if (!dateStr.contains(":")) {dateStr += " 00:00:00";}if ("date".equals(pattern)) {pattern = "yyyy-MM-dd";} else if ("datetime".equals(pattern)) {pattern = "yyyy-MM-dd HH:mm:ss";}SimpleDateFormat formatter = new SimpleDateFormat(pattern);Date date = null;try {date = formatter.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return date;}/*** 获取当前时间* @return*/public static Date getCurrTime() {return new Date();}/*** 获取当前时间* @param pattern*        "date":返回日期(yyyy-MM-dd),*         "time":返回时间(HH:mm:ss),*       "datetime":返回日期和时间(yyyy-MM-dd HH:mm:ss)* @return*/public static String getCurrTime(String pattern) {return formatDate(new Date(), pattern);}/*** 获取中文格式当前日期* @param pattern*        "long":1984年10月9日*        "full":1984年10月9日 星期二* @return*/public static String getCurrDateCN(String pattern) {Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH) + 1;int day = calendar.get(Calendar.DAY_OF_MONTH);if ("long".equals(pattern)) {return year + "年" + month + "月" + day + "日";}if ("full".equals(pattern)) {return year + "年" + month + "月" + day + "日 " + getDayCN(calendar.getTime());}return "";}/*** 在原日期加一段时间间隔* @param date*        原日期* @param field*         "yyyy":年*         "MM":月*       "dd":日* @param amount*       间隔长度* @return*/public static Date dateAdd(Date date, String field, int amount) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);if ("yyyy".equals(field)) {calendar.add(Calendar.YEAR, amount);} else if ("MM".equals(field)) {calendar.add(Calendar.MONTH, amount);} else if ("dd".equals(field)) {calendar.add(Calendar.DATE, amount);}return calendar.getTime();}/*** 在原日期加一段时间间隔* @param date*       原日期* @param field*         "yyyy":年*         "MM":月*       "dd":日* @param amount*       间隔长度* @param pattern*      "date":返回日期(yyyy-MM-dd),*         "time":返回时间(HH:mm:ss),*       "datetime":返回日期和时间(yyyy-MM-dd HH:mm:ss)* @return*/public static String dateAdd(String dateStr, String field, int amount, String pattern) {if (Tools.isEmpty(dateStr)) {return "";}Date date = convertDateStrToDate(dateStr, "datetime");Calendar calendar = Calendar.getInstance();calendar.setTime(date);if ("yyyy".equals(field)) {calendar.add(Calendar.YEAR, amount);} else if ("MM".equals(field)) {calendar.add(Calendar.MONTH, amount);} else if ("dd".equals(field)) {calendar.add(Calendar.DATE, amount);}date = calendar.getTime();dateStr = formatDate(date, pattern);return dateStr;}/*** 计算日期差* @param date1* @param date2* @param field*      yyyy:年*         MM:月*       dd:日* @return*         date2 - date1*/public static int dateDiff(Date date1, Date date2, String field) {boolean flag = date1.compareTo(date2) > 0;if (flag) {Date tmp = date1;date1 = date2;date2 = tmp;}Calendar cal1 = Calendar.getInstance();cal1.setTime(date1);int year1 = cal1.get(Calendar.YEAR);int month1 = cal1.get(Calendar.MONTH);Calendar cal2 = Calendar.getInstance();cal2.setTime(date2);int year2 = cal2.get(Calendar.YEAR);int month2 = cal2.get(Calendar.MONTH);int yearDiff = year2- year1;int diff = 0;if ("yyyy".equals(field)) {diff = yearDiff;} else if ("MM".equals(field)) {if (yearDiff <= 0) {diff = month2 - month1;} else if (yearDiff == 1) {diff = 12 - month1 + month2;} else {diff = 12 - month1 + (year2 - year1 - 1) * 12 + month2;}} else if ("dd".equals(field)) {if (yearDiff <= 0) {diff = cal2.get(Calendar.DAY_OF_YEAR) - cal1.get(Calendar.DAY_OF_YEAR);} else if (yearDiff == 1) {diff = getDaysLeftOfYear(date1) + cal2.get(Calendar.DAY_OF_YEAR);} else {diff = getDaysLeftOfYear(date1);Calendar cal;for (int i = 1; i < yearDiff; i++) {cal = Calendar.getInstance();cal.setTime(dateAdd(date1, "yyyy", i));diff += cal.getActualMaximum(Calendar.DAY_OF_YEAR);}diff += cal2.get(Calendar.DAY_OF_YEAR);}}return flag ? -1 * diff : diff;}/*** 计算日期差* @param date1* @param date2* @param field*        yyyy:年*         MM:月*       dd:日* @return*/public static int dateDiff(String dateStr1, String dateStr2, String field) {Date date1 = convertDateStrToDate(dateStr1, "date");Date date2 = convertDateStrToDate(dateStr2, "date");int dateDiff = dateDiff(date1, date2, field);return dateDiff;}/*** 是否闰年* @param year* @return*/public static boolean isLeapYear(int year) {boolean flag = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;return flag;}/*** 是否闰年* @param date* @return*/public static boolean isLeapYear(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);boolean flag = isLeapYear(cal.get(Calendar.YEAR));return flag;}/*** 计算给定日期当年总天数* @param date* @return*/public static int getDaysOfYear(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);return cal.getActualMaximum(Calendar.DAY_OF_YEAR);}/*** 计算给定日期当年剩余天数* @param date* @return*/public static int getDaysLeftOfYear(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);int cnt = cal.getActualMaximum(Calendar.DAY_OF_YEAR) - cal.get(Calendar.DAY_OF_YEAR);return cnt;}/*** 获得星期几(周日为1,周六为7)* @param date*        给定日期* @return*/public static int getDay(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar.get(Calendar.DAY_OF_WEEK);}/*** 获得星期几(中文)* @param date* @return*/public static String getDayCN(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);switch (dayOfWeek) {case 1:return "星期日";case 2:return "星期一";case 3:return "星期二";case 4:return "星期三";case 5:return "星期四";case 6:return "星期五";case 7:return "星期六";default:return "";}}/*** 计算给定日期所在月的第一天* @param date*         给定日期* @return*/public static Date getFirstDayOfMonth(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.DAY_OF_MONTH, 1);return calendar.getTime();}/*** 计算给定日期所在月的最后一天* @param date*       给定日期* @return*/public static Date getLastDayOfMonth(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));return calendar.getTime();}/*** 计算给定日期所在周的第一天(周一)* @param date*      给定日期* @return*/public static Date getFirstDayOfWeek(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);dayOfWeek = dayOfWeek == Calendar.SUNDAY ? 8 : dayOfWeek;int dValue = Calendar.MONDAY - dayOfWeek;calendar.add(Calendar.DAY_OF_WEEK, dValue);return calendar.getTime();}/*** 计算给定日期所在月的最后一天(周日)* @param date*      给定日期* @return*/public static Date getLastDayOfWeek(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);dayOfWeek = dayOfWeek == Calendar.SUNDAY ? 8 : dayOfWeek;int diff = 8 - dayOfWeek;calendar.add(Calendar.DAY_OF_WEEK, diff);return calendar.getTime();}/*** 计算月视图中展示的第一天* @param date*       给定日期* @return*/public static Date getFirstDayOfMonthView(Date date) {Date firstDayOfMonth = getFirstDayOfMonth(date);int dayOfWeek = getDay(firstDayOfMonth);int diff = Calendar.SUNDAY - dayOfWeek;Calendar calendar = Calendar.getInstance();calendar.setTime(firstDayOfMonth);calendar.add(Calendar.DAY_OF_WEEK, diff);return calendar.getTime();}/*** 计算月视图中展示的最后一天* @param date*         给定日期* @return*/public static Date getLastDayOfMonthView(Date date) {Date lastDayOfMonth = getLastDayOfMonth(date);int dayOfWeek = getDay(lastDayOfMonth);int diff = Calendar.SATURDAY - dayOfWeek;Calendar calendar = Calendar.getInstance();calendar.setTime(lastDayOfMonth);calendar.add(Calendar.DAY_OF_WEEK, diff);return calendar.getTime();}/*** 计算月视图展示行数* @param date* @return*/public static int getRowCntOfMonthView(Date date) {int dayOfWeek1 = getDay(getFirstDayOfMonth(date));int dayOfWeek2 = getDay(getLastDayOfMonth(date));if (dayOfWeek1 == Calendar.SUNDAY && dayOfWeek2 == Calendar.SATURDAY) {return 4;}if (dayOfWeek1 != Calendar.SUNDAY && dayOfWeek2 != Calendar.SATURDAY) {return 6;}return 5;}public static void main(String args[]) {System.out.println(DateUtil.getCurrDateCN("full"));System.out.println(DateUtil.getCurrDateCN("long"));}
}

转载于:https://my.oschina.net/ytliyang/blog/673223

项目常用工具类整理(一)--时间工具类DateUtil.java相关推荐

  1. java 处理时间的类_java 日期时间处理类

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.util.Calendar; import java.sql.Da ...

  2. java 时间工具类 大于_Java 时间工具类

    1 /** 2 * 格式化字符串为日期格式3 *4 *@paramdateStr 需要格式化的字符串5 *@paramformat 需要的日期格式,例如"yyyy-MM-dd HH:mm:s ...

  3. java 日期的工具类_java 日期时间工具类

    package org.apache.pwd.util; import java.text.SimpleDateFormat; import java.util.Calendar; import ja ...

  4. 【Windows】办公+开发工具链整理

    如果你是Win10/Win11专业版用户,请继续往下看: [Windows]办公+开发工具链整理 办公 小工具 开发 办公 先放张图-- TIM:简约版QQ. 优点:占用空间小,且有通讯录.消息.我的 ...

  5. java常用工具类和Hutool常用的工具类整理

    java常用工具类和Hutool常用的工具类整理 1.java常用工具类 1.1 Scanner类 /*** Scanner 类*/@Testpublic void testScanner() {Sc ...

  6. java web 项目 常用 小工具类 ~~~~

    java web 项目 常用 小工具类 ~~~~ 一 .DateUtil  日期工具类 package com.devframe.common.util;import java.text.Simple ...

  7. 重学Java8新特性(四) : 日期时间API、LocalDateTime、DateTimeFormatter、开发中时间工具类(常用)

    文章目录 一.JDK8中日期时间API的介绍 1.1.LocalDate.LocalTime.LocalDateTime的使用 2.2.Instant类的使用 2.3.DateTimeFormatte ...

  8. simplexmlelement类设置编码_「软帝学院」:2019java五大常用工具类整理

    1.json转换工具 1. package com.taotao.utils; 3. import java.util.List; 5. import com.fasterxml.jackson.co ...

  9. 常用工具类 (一) : Apache Commons 常用工具类整理 (全)

    文章目录 一.commons-lang3 引入依赖 StringUtils 字符串工具类 StringEscapeUtils 转义字符串工具类 NumberUtils 数字工具类 ArrayUtils ...

  10. Android 项目必备(九)--> 项目常用工具类

    文章目录 AppUtils.java DeviceUtils.java NetUtils.java DateUtil.java DensityUtil.java FileUtils.java Stri ...

最新文章

  1. awk4.0 — awk格式化
  2. 聊聊Spring事务失效的12种场景,太坑人了
  3. vscode 新建cpp文件_Visual Studio Code (vscode)编译C++
  4. 使用r语言做garch模型_使用GARCH估计货币波动率
  5. Spring boot - 整合 Redis缓存(上)
  6. thinkphp增删改查
  7. yacc c语言语法分析,编译原理实践--语法分析程序的自动生成工具YACC.PPT
  8. MySQL入门学习笔记
  9. python爬虫实例(一) b站篇
  10. matlab假设网格颜色,MATLAB 画颜色网格图
  11. 系统测试缺陷检出密度越大越好吗?
  12. 22.3 MIDI 和音乐
  13. Pytorch 之torch.nn初探
  14. 云服务器怎么增加d盘_云服务器怎么加d盘
  15. 七上八下猜数字_车上互动游戏
  16. 冻库正常低压力是多少_冰箱系统压力正常是多少-冰柜r134运行低压压力
  17. 求知若饥,虚心若愚Stay Hungry, Stay Foolish--2005斯坦福大学05年毕业演讲
  18. Java与Python下载Bing首页图片
  19. GPT(4kb硬盘) 单硬盘装变色龙、GA-H61MA-D2V、ALC887-VD、HD6570成功驱动经验(转)
  20. 使用油猴(tampermonkey)自动答题

热门文章

  1. html marquee css,HTML之marquee(文字滚动)详解_html/css_WEB-ITnose
  2. 质量和品质的区别_议价采购,招标采购,比价采购的区别是什么?一文看懂?...
  3. mysql单实例和多实例,MySQL单实例、多实例安装_MySQL
  4. git submodule的工作原理
  5. labelImg标注工具(win10安装)
  6. mysql centos6_Linux下的Mysql的基本操作(CentOS6.6)
  7. cognos的HTMl显示,cognos利用html项目和提示元素结合
  8. mysql glibc包很大_linux 安装 mysql 的 glibc 包
  9. 【python数据分析】用python进行数据探索2(常见matplotlib及pandas绘图函数汇总、对比及拓展)
  10. python监听键盘输入 linux_Linux下使用Python捕获键盘输入