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

来源:互联网 发布:哪些数据库是免费的 编辑:程序博客网 时间:2024/06/06 02:21
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);// 月份+1cal.set(Calendar.MILLISECOND, -1);// 毫秒-1return cal.getTime();}/** * 获得当前月的第一天 * <p> * HH:mm:ss SS为零 *  * @return */public static Date firstDayOfMonth() {Calendar cal = calendar();cal.set(Calendar.DAY_OF_MONTH, 1); // M月置1cal.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);}}

0 0
原创粉丝点击