(java 功能篇)之 java时间工具类分析

阿里 阅读:273 2021-03-31 22:57:20 评论:0
package com.emc.util; 
 
/* 
 *  Copyright  sunflower 
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License"); 
 *  you may not use this file except in compliance with the License. 
 *  You may obtain a copy of the License at 
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0 
 * 
 *  Unless required by applicable law or agreed to in writing, software 
 *  distributed under the License is distributed on an "AS IS" BASIS, 
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 *  See the License for the specific language governing permissions and 
 *  limitations under the License. 
 * 
 */ 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 
import java.util.Locale; 
 
/** 
 * 日期时间工具类 
 *  
 * @author sunflower 
 *  
 */ 
public class DateUtils { 
	private static final SimpleDateFormat datetimeFormat = new SimpleDateFormat( 
			"yyyy-MM-dd HH:mm:ss"); 
	private static final SimpleDateFormat dateFormat = new SimpleDateFormat( 
			"yyyy-MM-dd"); 
	private static final SimpleDateFormat timeFormat = new SimpleDateFormat( 
			"HH:mm:ss"); 
 
	/** 
	 * 获得当前日期时间 
	 * <p> 
	 * 日期时间格式yyyy-MM-dd HH:mm:ss 
	 *  
	 * @return 
	 */ 
	public static String currentDatetime() { 
		return datetimeFormat.format(now()); 
	} 
 
	/** 
	 * 格式化日期时间 
	 * <p> 
	 * 日期时间格式yyyy-MM-dd HH:mm:ss 
	 *  
	 * @return 
	 */ 
	public static String formatDatetime(Date date) { 
		return datetimeFormat.format(date); 
	} 
 
	/** 
	 * 格式化日期时间 
	 *  
	 * @param date 
	 * @param pattern 
	 *            格式化模式,详见{@link SimpleDateFormat}构造器 
	 *            <code>SimpleDateFormat(String pattern)</code> 
	 * @return 
	 */ 
	public static String formatDatetime(Date date, String pattern) { 
		SimpleDateFormat customFormat = (SimpleDateFormat) datetimeFormat 
				.clone(); 
		customFormat.applyPattern(pattern); 
		return customFormat.format(date); 
	} 
 
	/** 
	 * 获得当前日期 
	 * <p> 
	 * 日期格式yyyy-MM-dd 
	 *  
	 * @return 
	 */ 
	public static String currentDate() { 
		return dateFormat.format(now()); 
	} 
 
	/** 
	 * 格式化日期 
	 * <p> 
	 * 日期格式yyyy-MM-dd 
	 *  
	 * @return 
	 */ 
	public static String formatDate(Date date) { 
		return dateFormat.format(date); 
	} 
 
	/** 
	 * 获得当前时间 
	 * <p> 
	 * 时间格式HH:mm:ss 
	 *  
	 * @return 
	 */ 
	public static String currentTime() { 
		return timeFormat.format(now()); 
	} 
 
	/** 
	 * 格式化时间 
	 * <p> 
	 * 时间格式HH:mm:ss 
	 *  
	 * @return 
	 */ 
	public static String formatTime(Date date) { 
		return timeFormat.format(date); 
	} 
 
	/** 
	 * 获得当前时间的<code>java.util.Date</code>对象 
	 *  
	 * @return 
	 */ 
	public static Date now() { 
		return new Date(); 
	} 
 
	public static Calendar calendar() { 
		Calendar cal = GregorianCalendar.getInstance(Locale.CHINESE); 
		cal.setFirstDayOfWeek(Calendar.MONDAY); 
		return cal; 
	} 
 
	/** 
	 * 获得当前时间的毫秒数 
	 * <p> 
	 * 详见{@link System#currentTimeMillis()} 
	 *  
	 * @return 
	 */ 
	public static long millis() { 
		return System.currentTimeMillis(); 
	} 
 
	/** 
	 *  
	 * 获得当前Chinese月份 
	 *  
	 * @return 
	 */ 
	public static int month() { 
		return calendar().get(Calendar.MONTH) + 1; 
	} 
 
	/** 
	 * 获得月份中的第几天 
	 *  
	 * @return 
	 */ 
	public static int dayOfMonth() { 
		return calendar().get(Calendar.DAY_OF_MONTH); 
	} 
 
	/** 
	 * 今天是星期的第几天 
	 *  
	 * @return 
	 */ 
	public static int dayOfWeek() { 
		return calendar().get(Calendar.DAY_OF_WEEK); 
	} 
 
	/** 
	 * 今天是年中的第几天 
	 *  
	 * @return 
	 */ 
	public static int dayOfYear() { 
		return calendar().get(Calendar.DAY_OF_YEAR); 
	} 
 
	/** 
	 *判断原日期是否在目标日期之前 
	 *  
	 * @param src 
	 * @param dst 
	 * @return 
	 */ 
	public static boolean isBefore(Date src, Date dst) { 
		return src.before(dst); 
	} 
 
	/** 
	 *判断原日期是否在目标日期之后 
	 *  
	 * @param src 
	 * @param dst 
	 * @return 
	 */ 
	public static boolean isAfter(Date src, Date dst) { 
		return src.after(dst); 
	} 
 
	/** 
	 *判断两日期是否相同 
	 *  
	 * @param date1 
	 * @param date2 
	 * @return 
	 */ 
	public static boolean isEqual(Date date1, Date date2) { 
		return date1.compareTo(date2) == 0; 
	} 
 
	/** 
	 * 判断某个日期是否在某个日期范围 
	 *  
	 * @param beginDate 
	 *            日期范围开始 
	 * @param endDate 
	 *            日期范围结束 
	 * @param src 
	 *            需要判断的日期 
	 * @return 
	 */ 
	public static boolean between(Date beginDate, Date endDate, Date src) { 
		return beginDate.before(src) && endDate.after(src); 
	} 
 
	/** 
	 * 获得当前月的最后一天 
	 * <p> 
	 * HH:mm:ss为0,毫秒为999 
	 *  
	 * @return 
	 */ 
	public static Date lastDayOfMonth() { 
		Calendar cal = calendar(); 
		cal.set(Calendar.DAY_OF_MONTH, 0); // M月置零 
		cal.set(Calendar.HOUR_OF_DAY, 0);// H置零 
		cal.set(Calendar.MINUTE, 0);// m置零 
		cal.set(Calendar.SECOND, 0);// s置零 
		cal.set(Calendar.MILLISECOND, 0);// S置零 
		cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);// 月份+1 
		cal.set(Calendar.MILLISECOND, -1);// 毫秒-1 
		return cal.getTime(); 
	} 
 
	/** 
	 * 获得当前月的第一天 
	 * <p> 
	 * HH:mm:ss SS为零 
	 *  
	 * @return 
	 */ 
	public static Date firstDayOfMonth() { 
		Calendar cal = calendar(); 
		cal.set(Calendar.DAY_OF_MONTH, 1); // M月置1 
		cal.set(Calendar.HOUR_OF_DAY, 0);// H置零 
		cal.set(Calendar.MINUTE, 0);// m置零 
		cal.set(Calendar.SECOND, 0);// s置零 
		cal.set(Calendar.MILLISECOND, 0);// S置零 
		return cal.getTime(); 
	} 
 
	private static Date weekDay(int week) { 
		Calendar cal = calendar(); 
		cal.set(Calendar.DAY_OF_WEEK, week); 
		return cal.getTime(); 
	} 
 
	/** 
	 * 获得周五日期 
	 * <p> 
	 * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday 
	 *  
	 * @return 
	 */ 
	public static Date friday() { 
		return weekDay(Calendar.FRIDAY); 
	} 
 
	/** 
	 * 获得周六日期 
	 * <p> 
	 * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday 
	 *  
	 * @return 
	 */ 
	public static Date saturday() { 
		return weekDay(Calendar.SATURDAY); 
	} 
 
	/** 
	 * 获得周日日期 
	 * <p> 
	 * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday 
	 *  
	 * @return 
	 */ 
	public static Date sunday() { 
		return weekDay(Calendar.SUNDAY); 
	} 
 
	/** 
	 * 将字符串日期时间转换成java.util.Date类型 
	 * <p> 
	 * 日期时间格式yyyy-MM-dd HH:mm:ss 
	 *  
	 * @param datetime 
	 * @return 
	 */ 
	public static Date parseDatetime(String datetime) throws ParseException { 
		return datetimeFormat.parse(datetime); 
	} 
 
	/** 
	 * 将字符串日期转换成java.util.Date类型 
	 *<p> 
	 * 日期时间格式yyyy-MM-dd 
	 *  
	 * @param date 
	 * @return 
	 * @throws ParseException 
	 */ 
	public static Date parseDate(String date) throws ParseException { 
		return dateFormat.parse(date); 
	} 
 
	/** 
	 * 将字符串日期转换成java.util.Date类型 
	 *<p> 
	 * 时间格式 HH:mm:ss 
	 *  
	 * @param time 
	 * @return 
	 * @throws ParseException 
	 */ 
	public static Date parseTime(String time) throws ParseException { 
		return timeFormat.parse(time); 
	} 
 
	/** 
	 * 根据自定义pattern将字符串日期转换成java.util.Date类型 
	 *  
	 * @param datetime 
	 * @param pattern 
	 * @return 
	 * @throws ParseException 
	 */ 
	public static Date parseDatetime(String datetime, String pattern) 
			throws ParseException { 
		SimpleDateFormat format = (SimpleDateFormat) datetimeFormat.clone(); 
		format.applyPattern(pattern); 
		return format.parse(datetime); 
	} 
} 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

排行榜
关注我们

一个IT知识分享的公众号