/******************************************************************************* * Copyright 2015 htd0324@gmail.com * * 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. ******************************************************************************/ package com.laudandjolynn.mytv.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author: Laud * @email: htd0324@gmail.com * @date: 2012-9-11 下午3:28:34 * @copyright: www.dreamoriole.com */ public class DateUtils { private final static Logger logger = LoggerFactory .getLogger(DateUtils.class); // 默认时间格式 public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss"; /** * 获取当天的日期字符串,yyyy-MM-dd * * @return */ public static String today() { return DateUtils.date2String(Calendar.getInstance().getTime(), "yyyy-MM-dd"); } /** * 获取明天的日期字符串,yyyy-MM-dd * * @return */ public static String tommorow() { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, 1); return DateUtils.date2String(calendar.getTime(), "yyyy-MM-dd"); } /** * 字符串转为时间 * * @param date * @param pattern * @return */ public static Date string2Date(String date, String pattern) { SimpleDateFormat format = new SimpleDateFormat(pattern); try { return format.parse(date); } catch (ParseException e) { logger.error("invalid date value: " + date, e); } return null; } /** * 字符串转为时间 * * @param date * @return */ public static Date string2Date(String date) { return string2Date(date, DEFAULT_DATE_PATTERN); } /** * 时间转为字符串 * * @param date * @return yyyy-MM-dd HH:mm:ss格式 */ public static String date2String(Date date) { SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_DATE_PATTERN); formatter.setTimeZone(TimeZone.getDefault()); return formatter.format(date); } /** * 时间转为字符串 * * @param date * @param pattern * 时间样式 * @return */ public static String date2String(Date date, String pattern) { SimpleDateFormat formatter = new SimpleDateFormat(pattern); formatter.setTimeZone(TimeZone.getDefault()); return formatter.format(date); } /** * 获取指定時間一周的日期列表 * * @param date * @return */ public static Date[] getWeek(Date date) { Date[] dates = new Date[7]; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); for (int i = 0; i < 7; i++) { dates[i] = calendar.getTime(); calendar.add(Calendar.DAY_OF_YEAR, 1); } return dates; } /** * 获取指定时间的下一周头一天, 每周第一天为星期一 * * @param date * @return */ public static Date nextWeek(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); calendar.add(Calendar.WEEK_OF_YEAR, 1); return calendar.getTime(); } /** * 获取指定时间一周的日期列表,每周第一天为星期一 * * @param date * @param pattern * @return */ public static String[] getWeek(Date date, String pattern) { Date[] dates = getWeek(date); String[] result = new String[dates.length]; for (int i = 0; i < 7; i++) { result[i] = date2String(dates[i], pattern); } return result; } /** * 给指定日期加/减年 * * @param date * @param year * 正数加,负数减 * @return */ public static Date addYear(Date date, int year) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.YEAR, year); return calendar.getTime(); } /** * 给指定日期加/减指定月 * * @param date * @param month * 正数加,负数减 * @return */ public static Date addMonth(Date date, int month) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, month); return calendar.getTime(); } /** * 给指定日期加/减指定天数 * * @param date * @param day * 正数加,负数减 * @return */ public static Date addDay(Date date, int day) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, day); return calendar.getTime(); } /** * 计算两个指定日期相差几天 * * @param arg0 * @param arg1 * @return 返回大减小的相差天数 */ public static long differHowManyDays(Date arg0, Date arg1) { long d1 = arg0.getTime(); long d2 = arg1.getTime(); return Math.abs(d1 - d2) / (60 * 60 * 24 * 1000); } /** * 取得一天的开始时间 * * @param date * @return */ public static Date getStartOfTheDay(Date date) { String value = date2String(date, "yyyy-MM-dd 00:00:00"); return string2Date(value); } /** * 取得一天的结束时间 * * @param date * @return */ public static Date getEndOfTheDay(Date date) { String value = date2String(date, "yyyy-MM-dd 23:59:59"); return string2Date(value); } /** * 取得指定月份的第一天 * * @param date * @return */ public static Date getFirstDayOfTheMonth(Date date) { String value = date2String(date, "yyyy-MM-01 00:00:00"); return string2Date(value); } /** * 取得指定月份的最后一天 * * @param date * @return */ public static Date getLastDayOfTheMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), lastDay, 0, 0, 0); return calendar.getTime(); } }