Java的日期工具类
- package com.tech.jin.util;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- import org.apache.log4j.Logger;
- public class DateUtil {
- private static Logger logger = Logger.getLogger(DateUtil.class);
- private static Date now = new Date();
- /**
- * 获取日期格式对象
- * @param format
- * @return
- */
- private static DateFormat getFormatInstance(String format){
- DateFormat sdf = new SimpleDateFormat(format);
- return sdf;
- }
- /**
- * date对象转字符串
- * @param date
- * @param format
- * @return
- */
- public static String dateToString(Date date,String format){
- if(date==null){
- return "";
- }
- DateFormat df = getFormatInstance(format);
- String dateStr = df.format(date);
- logger.info("dateToString:"+dateStr);
- return dateStr;
- }
- /**
- * 字符串转date对象
- * @param dateStr
- * @param format
- * @return
- */
- public static Date stringToDate(String dateStr,String format){
- if(dateStr==null||"".equals(dateStr.trim())){
- logger.info("要转换的date字符串为空...");
- return null;
- }
- logger.info("stringToDate:"+dateStr);
- DateFormat df = getFormatInstance(format);
- Date date = null;
- try {
- date = df.parse(dateStr);
- } catch (ParseException e) {
- logger.error("stringToDate转换错误:"+e);
- }
- return date;
- }
- /**
- * date字符串更换格式
- * @param dateStr
- * @param oldFormat
- * @param newFormat
- * @return
- */
- public static String stringToString(String dateStr,String oldFormat,String newFormat){
- Date date = stringToDate(dateStr, oldFormat);
- dateStr = dateToString(date, newFormat);
- return dateStr;
- }
- /**
- * 获取当前时间/日期
- * @return
- */
- public static Date getNow(){
- return now;
- }
- /**
- * 获取当前时间/日期字符串
- * @param format
- * @return
- */
- public static String getNowStr(String format){
- String nowStr = dateToString(now, format);
- logger.info("获取当前时间字符串:"+nowStr);
- return nowStr;
- }
- /**
- * 比较两个时间字符串
- * @param dateStr1
- * @param dateStr2
- * @param format
- * @return -2:比较时间异常
- * -1: (dateStr1 < dateStr2)
- * 0: (dateStr1 = dateStr2)
- * 1: (dateStr1 > dateStr2)
- *
- */
- public static int compareDateStr(String dateStr1,String dateStr2,String format){
- logger.info("dateStr1:"+dateStr1+" dateStr2:"+dateStr2);
- Date date1 = stringToDate(dateStr1, format);
- Date date2 = stringToDate(dateStr2, format);
- int result = -2;//初始化状态
- result = compareDate(date1, date2);
- String resultStr = "对字符串进行("+format+")格式化后,";
- if(result==0){
- resultStr += dateStr1+" = "+dateStr2;
- }else if(result==1){
- resultStr += dateStr1+" > "+dateStr2;
- }else if(result==-1){
- resultStr += dateStr1+" < "+dateStr2;
- }else{
- resultStr += "比较日期异常...";
- }
- logger.info("比较时间结果:"+result +" "+resultStr);
- return result;
- }
- /**
- * 比较两个date
- * @param date1
- * @param date2
- * @return -2:比较时间异常
- * -1: (date1 < date2)
- * 0: (date1 = date2)
- * 1: (date1 > date2)
- */
- public static int compareDate(Date date1,Date date2){
- int result = -2;//初始化状态
- if(date1==null||date2==null){
- return -2;
- }
- result = date1.compareTo(date2);
- logger.info("compareDate:"+result);
- return result;
- }
- /**
- * 获取传入date的几天前或几天后日期
- * @param date
- * @param daysCount 天数(正数:daysCount天后;负数:daysCount天前)
- * @return
- */
- public static Date getDayBeforeOrAfter(Date date,int daysCount){
- if(date==null){
- return null;
- }
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- c.add(Calendar.DATE, daysCount);
- return c.getTime();
- }
- /**
- * 获取传入dateStr的几天前或几天后日期
- * @param dateStr
- * @param format 传入传出的日期字符串格式
- * @param daysCount 天数(正数:daysCount天后;负数:daysCount天前)
- * @return
- */
- public static String getDayBeforeOrAfter(String dateStr,String format,int daysCount){
- if(dateStr==null||"".equals(dateStr.trim())){
- return "";
- }
- logger.info("dateStr:"+dateStr+" format:"+format +" daysCount:"+daysCount);
- Date date = stringToDate(dateStr, format);
- date = getDayBeforeOrAfter(date, daysCount);
- dateStr = dateToString(date, format);
- logger.info("dateStr:"+dateStr);
- return dateStr;
- }
- /**
- * 获取date这个月的最后一天
- * @param date
- * @return
- */
- public static Date getDayMonthEnd(Date date){
- if(date==null){
- return null;
- }
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- c.add(Calendar.MONTH, 1);//得到下个月
- c.set(Calendar.DATE, 1);//设置下个月1号初始化
- c.add(Calendar.DATE, -1);//下个月1号减一天,即date当月的最后一天
- return c.getTime();
- }
- /**
- * 取两个日期的差值
- * @param startDate
- * @param endDate
- * @return int[]{days,hours,minutes,seconds}
- */
- public static int[] getDateDiff(Date startDate,Date endDate) {
- if(startDate==null||endDate==null){
- logger.error("getDaysDiff:传入的日期参数异常...");
- return null;
- }
- long time = (endDate.getTime() - startDate.getTime());//单位:毫秒
- time = Math.abs(time);
- time = time / 1000;//转成秒
- long days = time / (24 * 60 * 60);
- long hours = time % (24 * 60 * 60) / (60 * 60);
- long minutes = time % (60 * 60) / 60;
- long seconds = time % 60;
- logger.info("日期差值:"+days+"天 "+hours+"小时 "+minutes+"分钟 "+seconds+"秒");
- int[] diff = new int[]{(int)days,(int)hours,(int)minutes,(int)seconds};
- return diff;
- }
- /**
- * 得到date的daysCount天前/天后是星期几
- * @param date
- * @param daysCount
- * @return
- */
- public static String getAfterDayWeek(Date date,int daysCount) {
- date = getDayBeforeOrAfter(date, daysCount);
- String dateStr = dateToString(date, "E");
- logger.info("getAfterDayWeek:" + dateStr);
- return dateStr;
- }
- public static void main(String[] args) {
- Date a = stringToDate("20170106 23:57:59", "yyyyMMdd HH:mm:ss");
- Date b = stringToDate("20170107 23:56:59", "yyyyMMdd HH:mm:ss");
- getDateDiff(a, b);
- }
- }
Java的日期工具类的更多相关文章
- JAVA 8 日期工具类
JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...
- Java案例——日期工具类
需求:定义一个日期工具类,包含两个方法,按日期转化成指定格式的字符串,把字符串解析为指定格式的日期 然后定义一个测试类测试 分析: 1.定义一个日期工具类 2.定义一个方法dateToString,用 ...
- java DateTimeUtil 日期工具类
package com.sicdt.library.core.utils; import java.sql.Timestamp; import java.text.DateFormat; import ...
- java 常用日期工具类的操作
获取指定日期的时间戳 /* * 获取指定日期的时间戳 * */ public static long getMillis(String date_str){ try { SimpleDateForma ...
- 日期工具类 - DateUtil.java
日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...
- Java基础知识强化92:日期工具类的编写和测试案例
1. DateUtil.java,代码如下: package cn.itcast_04; import java.text.ParseException; import java.text.Simpl ...
- 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时,若 ...
随机推荐
- 关于新版ADT创建项目时出现appcompat_v7的问题
做Android开发的朋友最近会发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容.并且是创建一个新的内容就会出现.这到底是怎么回事呢?原来appcompa ...
- 记一次【求n以内的素数个数】的优化记录
最近在leetCode上刷提,还是满锻炼人的,为以后面试打基础吧.不多说下面开始. 问题:求[2,n]之间的素数的个数. 来源:leetCode OJ 提示: Let's start with a i ...
- node-webkit 桌面开发 初入1
node-webkit 是什么就不介绍了 注意官网的一句话 ”node-webkit is based on Chromium and node.js " 所以node-webkit 实际 ...
- Ubuntu 14.04 编译安装 boost 1.58
简介 Boost is a set of libraries for the C++ programming language that provide support for tasks and s ...
- 利用vmware 搭建分布式集群
前言: 我们需要至少3台服务器来实现分布式,鉴于没那么多钱买真机器,从学习和开发的角度看,只有虚拟机一条路了. 软件选择: 虚拟机使用VMware软件,因为主流而且资料比较多,学习成 ...
- Liunx面试题
答案待定 1.请用shell查询file1 里面空行的所在行号2.编写ShellScript查询file1 以abc 结尾的行3.打印出file1 文件第1 到第3 行4.如何将本地80 端口的请求转 ...
- iOS 面试题(二):什么时候在 block 中不需要使用 weakSelf --转自唐巧
问题 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: __weak typeof(self) weakSelf ...
- docker好文收藏
深入浅出Docker(一):Docker核心技术预览 2. 核心技术预览 Docker核心是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观.我们从虚拟化方法的四个方面:隔离性.可配额/可度 ...
- linq 左连接
var list = (from item in vall join item3 in v1 on new { item.FItemID, item.FAuxPropID } equals new { ...
- Q的深层嵌套
1.如果将异步方法用同步的方式执行,try catch能捕获到错误,同时不会阻塞到主进程,因此console.log(3333)能执行. var fs = require('fs'); try { v ...