`

java时间处理工具类

阅读更多
package com.dc.util;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/* ******************  类说明  *********************
 * class       :  TimeUtil
 * @author     :  ncc
 * create time :  2017-12-19 上午11:03:11
 * @version    :  1.0  
 * description :  日期时间获取
 * @see        :                        
 * ************************************************/   
public class TimeUtil {
	
	/* ********************************************
	 * method name   : date 
	 * description   : 按指定格式获取当前时间
	 * @return       : String
	 * @param        : @param fmt
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String date(String fmt) {
		return new SimpleDateFormat(fmt).format(new Date());
	}

	/* ********************************************
	 * method name   : date 
	 * description   : 获取指定时间对应的指定格式获取
	 * @return       : String
	 * @param        : @param fmt 
	 * @param        : @param t
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String date(String fmt, long t) {
		return new SimpleDateFormat(fmt).format(new Date(t));
	}

	/* ********************************************
	 * method name   : date8 
	 * description   : 获取八位日期 yyyyMMdd
	 * @return       : String
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String date8() {
		return new SimpleDateFormat("yyyyMMdd").format(new Date());
	}

	/* ********************************************
	 * method name   : date8 
	 * description   : 将时间转换为8位日期 yyyyMMdd
	 * @return       : String
	 * @param        : @param date
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String date8(Date date) {
		return new SimpleDateFormat("yyyyMMdd").format(date);
	}

	/* ********************************************
	 * method name   : time6 
	 * description   : 获取6位当前时间 HHmmss
	 * @return       : String
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String time6() {
		return new SimpleDateFormat("HHmmss").format(new Date());
	}
	
	/* ********************************************
	 * method name   : time9 
	 * description   : 获取9位当前时间 HHmmssSSS
	 * @return       : String
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String time9() {
		return new SimpleDateFormat("HHmmssSSS").format(new Date());
	}

	/* ********************************************
	 * method name   : dateByHour 
	 * description   : 获取指定时间对应的日期时间 yyyyMMddHH
	 * @return       : String
	 * @param        : @param date
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String dateByHour( ) {
		return new SimpleDateFormat("yyyyMMddHH").format(new Date());
	}
	
	/* ********************************************
	 * method name   : time6 
	 * description   : 获取指定时间对应的6位时间 HHmmss
	 * @return       : String
	 * @param        : @param date
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String time6(Date date) {
		return new SimpleDateFormat("HHmmss").format(date);
	}
	
	/* ********************************************
	 * method name   : datetime12 
	 * description   : 获取指定时间对应的12位时间 yyyyMMddHHmm
	 * @return       : String
	 * @param        : @param date
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String datetime12(Date date) {
		return new SimpleDateFormat("yyyyMMddHHmm").format(date);
	}
	
	/* ********************************************
	 * method name   : datetime14 
	 * description   : 获取指定时间对应的14位时间 yyyyMMddHHmmss
	 * @return       : String
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String datetime14( ) {
		return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
	}
	
	/* ********************************************
	 * method name   : calcMinute 
	 * description   : 获取指定时间指定分钟之后的时间
	 * @return       : String yyyyMMddHHmm
	 * @param        : @param time12 yyyyMMddHHmm
	 * @param        : @param s 指定分钟,可为负
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String calcMinute(String time12, int s) {
		Calendar cal = Calendar.getInstance();
		cal.set(Integer.parseInt(time12.substring(0, 4)), Integer
				.parseInt(time12.substring(4, 6)) - 1, Integer.parseInt(time12
				.substring(6, 8)), Integer.parseInt(time12.substring(8, 10)),
				Integer.parseInt(time12.substring(10, 12)));
		cal.add(Calendar.MINUTE, s);
		return new SimpleDateFormat("yyyyMMddHHmm").format(cal.getTime());
	}
	
	/* ********************************************
	 * method name   : getYesterday 
	 * description   : 获取指定时间前一天的8位日期 yyyyMMdd
	 * @return       : String
	 * @param        : @param today
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String getYesterday(Date today){
		Calendar cal = Calendar.getInstance();
		cal.setTime(today);
		cal.add(Calendar.DAY_OF_YEAR, -1);
		return new SimpleDateFormat("yyyyMMdd").format(cal.getTime());
	}
	/**
	 * <br>description : 获取当前日期的前几天日期
	 * @param date8
	 * @param i
	 * @return
	 * @author      xiatian
	 * @version     1.0
	 * @date        Oct 21, 201310:03:05 AM
	 */
	/* ********************************************
	 * method name   : calcDay 
	 * description   : 获取指定日期yyyyMMdd的前几天的8位日期yyyyMMdd
	 * @return       : String
	 * @param        : @param date8 指定日期
	 * @param        : @param i 前n天
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String calcDay(String date8,int i){
		Calendar cal = Calendar.getInstance();
		cal.set(Integer.parseInt(date8.substring(0,4)),Integer.parseInt(date8.substring(4,6))-1,
				Integer.parseInt(date8.substring(6)));
		cal.add(Calendar.DAY_OF_YEAR, i);
		return new SimpleDateFormat("yyyyMMdd").format(cal.getTime());
	}
	
	/* ********************************************
	 * method name   : getMonthLastDay 
	 * description   : 获取本月最后一天的8位日期 yyyyMMdd
	 * @return       : String
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String getMonthLastDay() {   
        Calendar lastDate = Calendar.getInstance();   
        lastDate.set(Calendar.DATE, 1);// 设为当前月的1号   
        lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号   
        lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天   
        return new SimpleDateFormat("yyyyMMdd").format(lastDate.getTime());   
    }
	
	/* ********************************************
	 * method name   : getNextMonth 
	 * description   : 得到下一个月的8位日期yyyyMMdd
	 * @return       : String
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String getNextMonth() {   
        Calendar c = Calendar.getInstance();   
        c.add(Calendar.MONTH, 1);// 加一个月
        return new SimpleDateFormat("yyyyMMdd").format(c.getTime());   
    }
	
	/* ********************************************
	 * method name   : getNextMonth 
	 * description   : 得到指定日期下一个月的8位日期yyyyMMdd,若没有,则往前推,知道有为止,如20180130,返回20180228
	 * @return       : String
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String getNextMonth(String date8){   
		Calendar cal = Calendar.getInstance();
		cal.set(Integer.parseInt(date8.substring(0,4)),Integer.parseInt(date8.substring(4,6))-1,
				Integer.parseInt(date8.substring(6)));
		cal.add(Calendar.MONTH, 1);// 加一个月
        return new SimpleDateFormat("yyyyMMdd").format(cal.getTime()); 
	}
	
	/* ********************************************
	 * method name   : getPreviousMonthEnd 
	 * description   : 获取上月最后一天 yyyyMMdd
	 * @return       : String
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String getPreviousMonthEnd() {   
        Calendar lastDate = Calendar.getInstance();   
        lastDate.add(Calendar.MONTH, -1);// 减一个月   
        lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天   
        lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天   
        return new SimpleDateFormat("yyyyMMdd").format(lastDate.getTime());   
    }
	
	/* ********************************************
	 * method name   : getTimestamp 
	 * description   : 将时间转化成时间戳
	 * @return       : String
	 * @param        : @param string
	 * @param        : @return
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String getTimestamp(String time14) {
		Date date = null;
		try {
			date = new SimpleDateFormat("yyyyMMddHHmmss").parse(time14);			
		} catch (ParseException e) {
			e.printStackTrace();
		}
		if (date == null) {
			return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
		}else {
			return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
		}
	}
	
	/* ********************************************
	 * method name   : getTimestamp 
	 * description   : 获取当前时间的时间戳
	 * @return       : Timestamp
	 * @param        : @return
	 * modified      : ncc ,  2017-12-20
	 * @see          : 
	 * ********************************************/      
	public static Timestamp getTimestamp() {
		Date date = new Date();
		return new Timestamp(date.getTime());
	}
	
	/* ********************************************
	 * method name   : getWhatDayByDate 
	 * description   : 获取指定日期为星期几
	 * @return       : String
	 * @param        : @param date
	 * @param        : @return
	 * @param        : @throws Exception
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String getWhatDayByDate(String date) throws Exception {
		Calendar calendar = Calendar.getInstance();
		Date temp = new SimpleDateFormat("yyyyMMdd").parse(date);
		calendar.setTime(temp);
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
//		System.out.println(date + ":" + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
		System.out.println(date + ":" + calendar.get(Calendar.WEEK_OF_MONTH));
		System.out.println(date + ":" + calendar.get(Calendar.WEEK_OF_YEAR));
		return dayOfWeek + "";
	}

	/* ********************************************
	 * method name   : getWeekByDate 
	 * description   : 获取指定日期yyyyMMdd为当年第几周
	 * @return       : String
	 * @param        : @param date
	 * @param        : @return
	 * @param        : @throws Exception
	 * modified      : ncc ,  2017-12-19
	 * @see          : 
	 * ********************************************/      
	public static String getWeekByDate(String date8) throws Exception {
		Calendar calendar = Calendar.getInstance();
		calendar.setFirstDayOfWeek(Calendar.MONDAY);
		Date temp = null;
		try {
			temp = new SimpleDateFormat("yyyyMMdd").parse(date8);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		if (temp == null) {
			temp = new Date();
		}
		calendar.setTime(temp);
		StringBuffer result = new StringBuffer();
		int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
		int year = calendar.get(Calendar.YEAR);
		if (weekOfYear == 1 && calendar.get(Calendar.MONTH) == 11) {
			year = year + 1;
		}
		result.append(year);
		if (weekOfYear < 10) {
			result.append("0");
		}
		result.append(weekOfYear);
//		System.out.println(date + ",month:" + calendar.get(Calendar.MONTH) + ",week:" + result + ",day:" + (calendar.get(Calendar.DAY_OF_WEEK)-1));
		return result.toString();
	}
	
	/* ********************************************
	 * method name   : getDateString 
	 * description   : 根据传入的long型时间转换为8位日期 yyyyMMdd
	 * @return       : String
	 * @param        : @param dt
	 * @param        : @return
	 * modified      : ncc ,  2017-12-20
	 * @see          : 
	 * ********************************************/      
	public static String getDateString(long dt) {
		SimpleDateFormat fm = new SimpleDateFormat("yyyyMMdd");
		return fm.format(new Date(dt));
	}

	/* ********************************************
	 * method name   : getTimeString 
	 * description   : 根据传入的long型时间转换为6位时间 HHmmss
	 * @return       : String
	 * @param        : @param dt
	 * @param        : @return
	 * modified      : ncc ,  2017-12-20
	 * @see          : 
	 * ********************************************/      
	public static String getTimeString(long dt) {
        SimpleDateFormat fm = new SimpleDateFormat("HHmmss"); // "yyyyMMdd G 'at' hh:mm:ss a zzz"
        return fm.format(new Date(dt));
    }
	
    /* ********************************************
     * method name   : getDateTimeString 
     * description   : 根据传入的long型时间转换为14位日期时间 yyyyMMddHHmmss
     * @return       : String
     * @param        : @param dt
     * @param        : @return
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/      
    public static String getDateTimeString(long dt) {
        SimpleDateFormat fm = new SimpleDateFormat("yyyyMMddHHmmss"); // "yyyyMMdd G 'at' hh:mm:ss a zzz"
        return fm.format(new Date(dt));
    }
    
    /* ********************************************
     * method name   : getSpNextMonth 
     * description   : 获取指定时间下个月的时间,若当前为月末则月份加一,日期置为下个月的月末,若当前非月末则月份加一
     * @return       : long
     * @param        : @param dt
     * @param        : @return
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/      
    public static long getNextMonth(long dt) {
    	Date d = new Date(dt);
		Calendar cal = Calendar.getInstance();
		cal.setTime(d);
		int curDay = cal.get(Calendar.DAY_OF_MONTH);// 获取当前日期
		int lastDay= cal.getActualMaximum(Calendar.DAY_OF_MONTH);//获取本月月末的日期
		if (curDay==lastDay) { // 若当前为月末则月份加一,日期置为下个月的月末
			cal.add(Calendar.MONTH,1);
			lastDay= cal.getActualMaximum(Calendar.DAY_OF_MONTH);
			cal.set(Calendar.DAY_OF_MONTH,lastDay);
		} else { //若当前非月末则月份加一
			cal.add(Calendar.MONTH,1);
		}
        return cal.getTimeInMillis();
    }
    
    /* ********************************************
     * method name   : getYear 
     * description   : 获取系统年份
     * @return       : String
     * @param        : @return
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/      
	public static String getYear() {
		return new SimpleDateFormat("yyyy").format(new Date());
	}
	
	private static final String THISCENTRUY = "20";
	private static final String LASTCENTRUY = "19";
	
	/* ********************************************
	 * method name   : getYear4ByYear2 
	 * description   : 将输入的2位年转换为4位的年,转换规则是:
	 * 					假定待转换的年不早于现在100年,即,如果待转换的2位的年大于现在
	 * 					的年份,那么说明它是上个世纪的,否则,认为是本世纪的
	 * @return       : String 如果输入年份不是2位,那么返回null
	 * @param        : @param strYear2 2位年
	 * @param        : @return
	 * modified      : ncc ,  2017-12-20
	 * @see          : 
	 * ********************************************/      
	private String getYear4ByYear2(String strYear2) {
		String strYear4 = null;
		if (null != strYear2 && strYear2.matches("\\d{2}")) {
			Calendar currentCal = Calendar.getInstance();
			int Year2 =	Integer.parseInt(Integer.toString(currentCal.get(Calendar.YEAR)).substring( 2, 4));
			int destYear2 = Integer.parseInt(strYear2);
			if (destYear2 > Year2)
				strYear4 = LASTCENTRUY + strYear2;
			else
				strYear4 = THISCENTRUY + strYear2;
		}
		return strYear4;
	}
	
	public static void main(String[] args) throws ParseException{
		  System.out.println(getNextMonth("20180130"));
	}
}

 

分享到:
评论

相关推荐

    非常强大的java时间处理工具类!.docx

    《非常强大的Java时间处理工具类——xk-time详解》 在Java编程中,时间处理是一项常见且重要的任务,尤其在处理日历事件、数据分析、定时任务等方面。然而,Java 8之前的日期API设计存在诸多不便,例如线程安全问题...

    7 非常强大的java时间处理工具类!.docx

    XK-Time工具类库正是为了解决Java时间处理的不便而诞生的,它是一个基于Java 8 API的,线程安全且功能丰富的工具集合。这个库提供了一系列强大且易用的工具类,使得日期和时间的操作变得更加便捷。 首先,`...

    99 非常强大的java时间处理工具类!.docx

    `xk-time`是一个精心设计的工具包,专门针对Java时间处理的各种需求,尤其在Java 8之后,它提供了丰富的功能和线程安全的API。这个工具包的主要目标是解决Java 8之前日期API的不便,以及简化日期操作和提高代码...

    java常用的工具类整理28个

    5. **java.time.***(Java 8及以上):包括`LocalDate`、`LocalTime`、`LocalDateTime`等,提供了更强大和直观的日期时间处理。 6. **java.io.File**:文件操作类,可以创建、删除、重命名文件,获取文件属性等。 ...

    java时间工具类,基本上全面的包括常用的关于时间的处理

    Java时间工具类是Java开发中不可或缺的一部分,它们提供了一系列方便的方法来处理日期和时间,使得开发者可以更加高效地进行时间相关的操作。在这个简单的DateUtil.java工具类中,我们可以期待找到一些基本但实用的...

    一些java常用的工具类

    通常,这样的库会包含一系列针对特定场景的工具类,如日期时间处理、文件操作、字符串格式化、数据校验等。例如,可能会有一个DateTimeUtils类,提供日期和时间的格式化、比较和转换方法;一个FileUtils类,用于文件...

    java工具类集合

    Java工具类集合是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常被组织在各种包下,如`java.util`、`java.lang`、`java.io`等。下面将详细介绍...

    Java日期处理工具类

    基本涵盖了各种场景的日期处理需要,包括时间类型转换,获取N天前后,月初月末,某段时间按天拆分等功能,欢迎使用。

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

    在Java编程语言中,日期和时间处理是常见且重要的任务。Java提供了多种工具类来帮助开发者处理日期和时间,使得我们可以方便地进行日期计算、格式化以及解析等操作。本篇将围绕Java中的日期工具类和时间工具类展开...

    java操作时间工具类

    Java操作时间工具类是开发者日常工作中经常会用到的模块,特别是在处理日期和时间相关的业务逻辑时。本工具类主要是为了方便地对日期和时间进行格式化、比较、计算等操作,提高开发效率。下面我们将详细探讨Java中...

    JAVA对象以及数据的工具类

    数据处理工具类往往涉及集合操作。Java的util包包含了多种集合框架类,如List、Set、Map等。Collections类提供了对这些集合进行操作的方法,如sort、reverse、copy等。此外,Arrays类可以用于排序和填充数组,包括...

    Java实现的Https请求工具类

    本篇文章将深入探讨如何在Java中实现一个用于处理HTTPS请求的工具类。 首先,要实现HTTPS请求,我们需要导入Java的`java.net`和`javax.net.ssl`包,这两个包提供了处理网络连接和SSL/TLS安全协议的类。以下是一些...

    Java-Android工具类

    此外,这份资料可能还包含其他类型的工具类,如Bitmap处理工具类,用于图片的加载、缩放和优化;Date工具类,用于日期和时间的格式化和转换;Dialog工具类,提供自定义对话框的快速创建;还有可能包括Utils类,其中...

    java短信服务工具类

    在Java编程中,这样的工具类通常包含了一系列方法,用于发送、接收和处理短信。下面我们将详细探讨Java短信服务工具类的关键知识点。 1. **SMS协议理解**: 短信服务通常基于GSM 03.40或3GPP TS 23.040标准,这些...

    DateUtil.java 时间日期处理工具类

    包含"yyyy-MM-dd"、"yyyy-MM-dd HH:mm:ss"、"yyyyMMdd"、"yyyyMMddHHmmss"、"yyyy-MM"、"yyyyMM"等时间格式的转换。 其中: 1.String转Timestamp stringToTimestamp(String dateStr); 2.比较传入时间与当前时间前一...

    时间工具类

    java 时间处理工具类,包含时间截取、转换,固定格式时间转换

    java工具类,日志处理类

    在Java编程中,工具类(Util Class)是包含各种静态方法的类,这些方法通常用于执行常见的、重复的任务,如字符串处理、数学计算或者集合操作等。这些类不包含任何状态,即没有实例变量,因此它们是线程安全的。在...

    java开发常用工具类

    本文将详细解析"java开发常用工具类"中的关键知识点,包括日历、时间处理、Excel导出、网络请求、流操作、数据处理、数值计算以及XML和Web工具类。 1. **日历和时间处理**: Java中`java.util.Calendar`和`java....

    java日常处理工具类part1-代码

    Java日常处理工具类是开发过程中不可或缺的部分,它们通常包含了各种常用功能的静态方法,能够极大地提高开发效率,减少代码重复。Part1中的"java日常处理工具类part1-代码"很可能是对Java基础工具类的一个初步介绍...

    28个java常用的工具类

    在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据处理、格式化、计算等。Java提供了丰富的内置工具类,但开发者也经常创建自定义工具类以满足项目需求。标题...

Global site tag (gtag.js) - Google Analytics