首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

java日期时间工具种

2012-11-20 
java日期时间工具类package org.sunflower.common.util/*?*? Copyright? sunflower?*?*? Licensed under

java日期时间工具类

package org.sunflower.common.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);
??? }
}

热点排行