为什么80%的码农都做不了架构师?>>>   

package com.hh.util;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;/*** 时间工具类,该类的出现是为了替换DateUtil混乱的方法签名。 在本类的工具方法中,凡涉及到时间的本地化表现形式时,都用String格式。</br>* 凡涉及到子<b>1970-01-01 08:00:00</b> 至某个时间的值时,都用long来表示</br>* * 本类提供的方法都是依照中国<b>GTM+08:00</b>的时区来计算。</br> 所有的本地化都是按照简体中文 “zh” 来计算。</br>* * <p>* 请注意:获取的当前毫秒值因为操作系统的原因,都有误差!而且在间隔很小的时间段内(大约十几毫秒,根据操作系统的不用而不同)获取到的* 毫秒值可能相同,可以理解为不同操作系统的最小时间单位为十几毫秒。* </p>* @version 1.0* @author lixunhui@qq.com* @since JDK 1.6**/
public class DateTools {// 日期式样,年月日,用横杠离开,例如:2006-12-25,2008-08-08private static final String YYYY_MM_DD = "yyyy-MM-dd";// 日期式样时分秒,时分秒用冒号离开,private static final String HH_MI_SS = "HH:mm:ss";// 日期式样,年月日时分秒,年月日用横杠离开,时分秒用冒号离开,private static final String YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss";// 中国时区private static TimeZone zone = TimeZone.getTimeZone("GMT+08:00");// 中国国家语言格式private static Locale locale = Locale.CHINESE;private static final SimpleDateFormat FORMAT_YYYY_MM_DD = new SimpleDateFormat(YYYY_MM_DD);private static final SimpleDateFormat FORMAT_HH_MI_SS = new SimpleDateFormat(HH_MI_SS);private static final SimpleDateFormat FORMAT_YYYY_MM_DD_HH_MI_SS = new SimpleDateFormat(YYYY_MM_DD_HH_MI_SS);private static final int YEAR = 24 * 60 * 60 * 365;private static final int MONTH = 24 * 60 * 60 * 30;private static final int DAY = 24 * 60 * 60;private static final int HOUR = 60 * 60;private static final int MINUTE = 60;public static void main(String[] args) {/*** String preMonthFirstDayDate = getPreMonthFirstDayDate();* System.out.println("preMonthFirstDayDate:" + preMonthFirstDayDate);* long preMonthFirstDayInMillis = getPreMonthFirstDayInMillis();* System.out.println("preMonthFirstDayInMillis:" +* preMonthFirstDayInMillis); long preMonthFirstDayInSeconds =* getPreMonthFirstDayInSeconds();* System.out.println("preMonthFirstDayInSeconds:" +* preMonthFirstDayInSeconds); String preMonthFirstDayTime =* getPreMonthFirstDayTime(); System.out.println("preMonthFirstDayTime:"* + preMonthFirstDayTime); String preMonthLastDayDate =* getPreMonthLastDayDate(); System.out.println("preMonthLastDayDate:" +* preMonthLastDayDate); long preMonthLastDayInMillis =* getPreMonthLastDayInMillis();* System.out.println("preMonthLastDayInMillis:" +* preMonthLastDayInMillis); long preMonthLastDayInSeconds =* getPreMonthLastDayInSeconds();* System.out.println("preMonthLastDayInSeconds:" +* preMonthLastDayInSeconds); String preMonthLastDayTime =* getPreMonthLastDayTime(); System.out.println("preMonthLastDayTime:" +* preMonthLastDayTime);**//*** String currMonthFirstDayDate = getCurrMonthFirstDayDate();* System.out.println("currMonthFirstDayDate:" + currMonthFirstDayDate);* long currMonthFirstDayInMillis = getCurrMonthFirstDayInMillis();* System.out.println("currMonthFirstDayInMillis:" +* currMonthFirstDayInMillis); long currMonthFirstDayInSeconds =* getCurrMonthFirstDayInSeconds();* System.out.println("currMonthFirstDayInSeconds:" +* currMonthFirstDayInSeconds); String currMonthFirstDayTime =* getCurrMonthFirstDayTime();* System.out.println("currMonthFirstDayTime:" + currMonthFirstDayTime);* long preMonthLastDayInSeconds = getPreMonthLastDayInSeconds();* System.out.println("preMonthLastDayInSeconds:" +* preMonthLastDayInSeconds); long preMonthLastDayInMillis =* getPreMonthLastDayInMillis();* System.out.println("preMonthLastDayInMillis:" +* preMonthLastDayInMillis);**//*** String currYearFirstDayDate = getCurrYearFirstDayDate();* System.out.println("currYearFirstDayDate:" + currYearFirstDayDate);* String preYearFirstDayDate = getPreYearFirstDayDate();* System.out.println("preYearFirstDayDate:" + preYearFirstDayDate);* long preYearFirstDayInMillis = getPreYearFirstDayInMillis();* System.out.println("preYearFirstDayInMillis:" +* preYearFirstDayInMillis); long preYearFirstDayInSeconds =* getPreYearFirstDayInSeconds();* System.out.println("preYearFirstDayInSeconds:"* +preYearFirstDayInSeconds); String preYearFirstDayTime =* getPreYearFirstDayTime(); System.out.println("preYearFirstDayTime:" +* preYearFirstDayTime); String preYearLastDayDate =* getPreYearLastDayDate(); System.out.println("preYearLastDayDate:" +* preYearLastDayDate); long preYearLastDayInMillis =* getPreYearLastDayInMillis();* System.out.println("preYearLastDayInMillis:" +* preYearLastDayInMillis); long preYearLastDayInSeconds =* getPreYearLastDayInSeconds();* System.out.println("preYearLastDayInSeconds:" +* preYearLastDayInSeconds); String preYearLastDayTime =* getPreYearLastDayTime(); System.out.println("preYearLastDayTime:" +* preYearLastDayTime);**//*** for(int i=0;i<5;i++){ long currMonthFirstDayInMillis =* getPreYearFirstDayInMillis();* System.out.println("currMonthFirstDayInMillis:" +* currMonthFirstDayInMillis); }* * * long parseTime2Second = parseTime2Second("2006-01-01 07:59:59"); long* parseTime2Second2 = parseTime2Second("2006-01-01 08:00:00");* System.out.println(parseTime2Second);* System.out.println(parseTime2Second2);**/String parseSecond2Days = parseSecond2Days(99999999);System.out.println(parseSecond2Days);}/*** 获取当前时间的本地化表现形式。 如:2012-07-03 18:15:03 yyyy-MM-dd HH:mm:ss* * @return yyyy-MM-dd HH:mm:ss 本地化表现形式*/public static String currentTime() {Calendar calendar = Calendar.getInstance(zone, locale);Calendar.getInstance(zone, locale);Date time = calendar.getTime();String format = FORMAT_YYYY_MM_DD_HH_MI_SS.format(time);return format;}/*** 获取当前日期的本地化表现形式,不包含时间。 如:2012-07-03 yyyy-MM-dd* * @return yyyy-MM-dd 本地化表现形式*/public static String currentDate() {Calendar calendar = Calendar.getInstance(zone, locale);Date time = calendar.getTime();String format = FORMAT_YYYY_MM_DD.format(time);return format;}/*** 获取当前时间至1970-01-01 08:00:00 的毫秒值。 如:1341368657874* * @return long型 毫秒值*/public static long currentTimeInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);long timeInMillis = calendar.getTimeInMillis();return timeInMillis;}/*** 获取当前时间至1970-01-01 08:00:00 的秒值。 如:1341368867 该方法由毫秒值除以1000获得* * @return long型 秒值*/public static long currentTimeInSecond() {Calendar calendar = Calendar.getInstance(zone, locale);long timeInSecond = calendar.getTimeInMillis() / 1000;return timeInSecond;}/*** @param millis*            距1970-01-01 00:00:00.000的毫秒值* @return yyyy-MM-dd HH:mm:ss 本地化表现形式*/public static String parseMillis2Time(long millis) {Calendar calendar = Calendar.getInstance(zone, locale);calendar.setTimeInMillis(millis);Date time = calendar.getTime();String format = FORMAT_YYYY_MM_DD_HH_MI_SS.format(time);return format;}/*** * @param second*            距1970-1-1 00:00:00.000的秒值* @return yyyy-MM-dd HH:mm:ss 本地化表现形式* @see String parseMillis2Time(long millis)* @exception RuntimeException*                如果参数不能按照<code>yyyy-MM-dd HH:mm:ss</code>*                格式解析,会抛出RuntimeException*/public static String parseSecond2Time(long second) {return parseMillis2Time(second * 1000);}/*** * @param time*            "2012-07-04 12:19:34" 必须是 <code>yyyy-MM-dd HH:mm:ss</code> 格式* * @return long型 秒值* @exception RuntimeException*                如果参数不能按照<code>yyyy-MM-dd HH:mm:ss</code>*                格式解析,会抛出RuntimeException*/public static long parseTime2Second(String time) {if (time == null || time.trim().length() == 0) {return 0L;}Calendar calendar = Calendar.getInstance(zone, locale);Date date = null;try {date = FORMAT_YYYY_MM_DD_HH_MI_SS.parse(time);} catch (ParseException e) {e.printStackTrace();throw new RuntimeException("日期时间格式解析错误,请检查格式是否正确", e);}calendar.setTime(date);return calendar.getTimeInMillis() / 1000;}/*** 获取今天在 <code>00:00:00</code> 的日期和时间本地化表现形式* * @return <code>yyyy-MM-dd HH:mm:ss</code> 本地化表现形式*/public static String getTodayStartTime() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date date = calendar.getTime();String format = FORMAT_YYYY_MM_DD_HH_MI_SS.format(date);return format;}/*** 获取今天在 <code>00:00:00</code> 至 1970-01-01 08:00:00 的毫秒值* * @return long型 毫秒值*/public static long getTodayStartTimeInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date date = calendar.getTime();return date.getTime();}/*** 获取今天在 <code>00:00:00</code> 至 1970-01-01 08:00:00 的秒值</br>* * @return long型 秒值* @see long getTodayStartTimeInMillis()*/public static long getTodayStartTimeInSeconds() {return getTodayStartTimeInMillis() / 1000;}public static String getTodayEndTimes() {return parseMillis2Time(getTodayEndTimeInMillis());}/*** 获取今天在23:59:59 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2012-07-04 23:59:59 至 1970-01-01 08:00:00 的秒值* * @return long型 秒值*/public static long getTodayEndTimeInSeconds() {return getTodayEndTimeInMillis() / 1000;}/*** 获取今天在凌晨23:59:59 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2012-07-04 23:59:59 至 1970-01-01 08:00:00 的毫秒值* * @return long型 毫秒值*/public static long getTodayEndTimeInMillis() {Calendar todayEnd = Calendar.getInstance(zone, locale);todayEnd.set(Calendar.HOUR, 23);todayEnd.set(Calendar.MINUTE, 59);todayEnd.set(Calendar.SECOND, 59);todayEnd.set(Calendar.MILLISECOND, 999);Date date = todayEnd.getTime();return date.getTime();}/*** 获取 自 昨天00:00:00.000 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2012-07-03 00:00:00 至 1970-01-01 08:00:00 的毫秒值* * @return long型 毫秒值*/public static long getYesterdayStartTimeInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);calendar.add(Calendar.DAY_OF_MONTH, -1);Date date = calendar.getTime();return date.getTime();}/*** 获取 自 昨天00:00:00 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2012-07-03 00:00:00 至 1970-01-01 08:00:00 的秒值* * @return long型 秒值*/public static long getYesterdayStartTimeInSeconds() {return getYesterdayStartTimeInMillis() / 1000;}/*** 获取昨天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式 假如今天是2012-07-04,则返回* 2012-07-03 00:00:00* * @return 昨天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式*/public static String getYesterdayStartTime() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);calendar.add(Calendar.DAY_OF_MONTH, -1);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD_HH_MI_SS.format(date);}/*** 获取昨天按照 <code>yyyy-MM-dd</code> 本地化表现形式</br> 假如今天是2012-07-04,则返回* 2012-07-03* * @return 获取昨天按照 <code>yyyy-MM-dd</code> 本地化表现形式*/public static String getYesterdayDate() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.add(Calendar.DAY_OF_MONTH, -1);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD.format(date);}/*** 获取昨天在午夜23:59:59 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2012-07-03 23:59:59 至 1970-01-01 08:00:00 的毫秒值* * @return long型 毫秒值*/public static long getYesterdayEndTimeInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.add(Calendar.DAY_OF_MONTH, -1);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(Calendar.MILLISECOND, 999);Date date = calendar.getTime();return date.getTime();}/*** 获取昨天在午夜23:59:59 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2012-07-03 23:59:59 至 1970-01-01 08:00:00 的秒值* * @return long型 秒值*/public static long getYesterdayEndTimeInSeconds() {return getYesterdayEndTimeInMillis();}/*** 获取上个月第一天的按照 <code>yyyy-MM-01 00:00:00</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2012-06-01 00:00:00* * @return 获取上个月第一天的按照 <code>yyyy-MM-01 00:00:00</code> 本地化表现形式</br>*/public static String getPreMonthFirstDayTime() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.add(Calendar.MONTH, -1);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD_HH_MI_SS.format(date);}/*** 获取上个月第一天的按照 <code>yyyy-MM-01</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2012-06-01* * @return 获取上个月第一天的按照 <code>yyyy-MM-01</code> 本地化表现形式</br>*/public static String getPreMonthFirstDayDate() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.add(Calendar.MONTH, -1);calendar.set(Calendar.DAY_OF_MONTH, 1);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD.format(date);}/*** 获取上个月第一天的00:00:00 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2012-06-30 00:00:00 至 1970-01-01 08:00:00 的毫秒值* * @return long 毫秒值*/public static long getPreMonthFirstDayInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.add(Calendar.MONTH, -1);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date date = calendar.getTime();return date.getTime();}/*** 获取上个月第一天的00:00:00 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2012-06-30 00:00:00 至 1970-01-01 08:00:00 的秒值* * @return long 秒值*/public static long getPreMonthFirstDayInSeconds() {return getPreMonthFirstDayInMillis() / 1000;}/*** 获取上个月最后一天的按照 <code>yyyy-MM-dd 23:59:59</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2012-06-30 23:59:59* * @return 获取上个月最后一天的按照 <code>yyyy-MM-dd 23:59:59</code> 本地化表现形式</br>*/public static String getPreMonthLastDayTime() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.add(Calendar.DAY_OF_MONTH, -1);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(Calendar.MILLISECOND, 999);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD_HH_MI_SS.format(date);}/*** 获取上个月最后一天的按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2012-06-30* * @return 获取上个月最后一天的按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>*/public static String getPreMonthLastDayDate() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.add(Calendar.DAY_OF_MONTH, -1);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD.format(date);}/*** 获取上个月最后一天的23:59:59 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2012-06-30 23:59:59 至 1970-01-01 08:00:00 的毫秒值* * @return long 毫秒值*/public static long getPreMonthLastDayInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.add(Calendar.DAY_OF_MONTH, -1);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(Calendar.MILLISECOND, 999);Date date = calendar.getTime();return date.getTime();}/*** 获取上个月最后一天的23:59:59 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2012-06-30 23:59:59 至 1970-01-01 08:00:00 的秒值* * @return long 秒值*/public static long getPreMonthLastDayInSeconds() {return getPreMonthLastDayInMillis() / 1000;}/*** 获取当前月第一天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2012-07-01 00:00:00* * @return 获取当前月第一天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式</br>*/public static String getCurrMonthFirstDayTime() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD_HH_MI_SS.format(date);}/*** 获取当前月第一天按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2012-07-01* * @return 获取当前月第一天按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>*/public static String getCurrMonthFirstDayDate() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD.format(date);}/*** 获取当前月第一天的00:00:00 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2012-07-01 00:00:00 至 1970-01-01 08:00:00 的毫秒值* * @return long 毫秒值*/public static long getCurrMonthFirstDayInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date date = calendar.getTime();return date.getTime();}/*** 获取当前月第一天的00:00:00 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2012-07-01 00:00:00 至 1970-01-01 08:00:00 的秒值* * @return long 毫秒值*/public static long getCurrMonthFirstDayInSeconds() {return getCurrMonthFirstDayInMillis() / 1000;}/*** 获取今年第一天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2012-01-01* * @return 获取今年第一天按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>*/public static String getCurrYearFirstDayDate() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD.format(date);}/*** 获取今年第一天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2012-01-01 00:00:00* * @return 获取今年第一天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式</br>*/public static String getCurrYearFirstDayTime() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1, 0, 0, 0);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD_HH_MI_SS.format(date);}/*** 获取今年第一天的00:00:00 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2012-01-01 00:00:00 至 1970-01-01 08:00:00 的毫秒值* * @return long 毫秒值*/public static long getCurrYearFirstDayInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1, 0, 0, 0);Date date = calendar.getTime();return date.getTime();}/*** 获取今年第一天的00:00:00 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2012-01-01 00:00:00 至 1970-01-01 08:00:00 的秒值* * @return long 毫秒值*/public static long getCurrYearFirstDayInSeconds() {return getCurrYearFirstDayInMillis() / 1000;}/*** 获取去年第一天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2011-01-01 00:00:00* * @return 获取今年第一天按照 <code>yyyy-MM-dd 00:00:00</code> 本地化表现形式</br>*/public static String getPreYearFirstDayTime() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set((calendar.get(Calendar.YEAR)) - 1, Calendar.JANUARY, 1, 0, 0, 0);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD_HH_MI_SS.format(date);}/*** 获取去年第一天按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2011-01-01* * @return 获取今年第一天按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>*/public static String getPreYearFirstDayDate() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set((calendar.get(Calendar.YEAR)) - 1, Calendar.JANUARY, 1);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD.format(date);}/*** 获取去年第一天的00:00:00 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2011-01-01 00:00:00 至 1970-01-01 08:00:00 的毫秒值* * @return long 毫秒值*/public static long getPreYearFirstDayInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set((calendar.get(Calendar.YEAR)) - 1, Calendar.JANUARY, 1, 0, 0, 0);calendar.set(Calendar.MILLISECOND, 0);Date date = calendar.getTime();return date.getTime();}/*** 获取去年第一天的00:00:00 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2011-01-01 00:00:00 至 1970-01-01 08:00:00 的秒值* * @return long 秒值* @see getPreYearFirstDayInMillis()*/public static long getPreYearFirstDayInSeconds() {return getPreYearFirstDayInMillis() / 1000;}/*** 获取去年最后一天按照 <code>yyyy-MM-dd 23:59:59</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2011-12-31 23:59:59* * @return 获取去年最后一天按照 <code>yyyy-MM-dd 23:59:59</code> 本地化表现形式</br>*/public static String getPreYearLastDayTime() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set((calendar.get(Calendar.YEAR)) - 1, Calendar.DECEMBER, 31, 23, 59, 59);calendar.set(Calendar.MILLISECOND, 999);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD_HH_MI_SS.format(date);}/*** 获取去年最后一天按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>* 假如今天是2012-07-04,则返回2011-12-31* * @return 获取去年最后一天按照 <code>yyyy-MM-dd</code> 本地化表现形式</br>*/public static String getPreYearLastDayDate() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set((calendar.get(Calendar.YEAR)) - 1, Calendar.DECEMBER, 31);calendar.set(Calendar.MILLISECOND, 999);Date date = calendar.getTime();return FORMAT_YYYY_MM_DD.format(date);}/*** 获取去年最后一天的00:00:00 至 1970-01-01 08:00:00 的毫秒值</br> 假如今天是 2012-07-04,则返回* 2011-12-31 23:59:59 至 1970-01-01 08:00:00 的毫秒值* * @return long 毫秒值*/public static long getPreYearLastDayInMillis() {Calendar calendar = Calendar.getInstance(zone, locale);calendar.set((calendar.get(Calendar.YEAR)) - 1, Calendar.DECEMBER, 31, 23, 59, 59);calendar.set(Calendar.MILLISECOND, 999);Date date = calendar.getTime();return date.getTime();}/*** 获取去年最后一天的00:00:00 至 1970-01-01 08:00:00 的秒值</br> 假如今天是 2012-07-04,则返回* 2011-12-31 23:59:59 至 1970-01-01 08:00:00 的秒值* * @return long 秒值* @see getPreYearLastDayInMillis()*/public static long getPreYearLastDayInSeconds() {return getPreYearLastDayInMillis() / 1000;}/*** 将 秒 换算成 X年X月X天* * @param second* @return*/public static String parseSecond2Days(int second) {int year = second / YEAR;int year_remainder = second % YEAR;int month = year_remainder / MONTH;int month_remainder = year_remainder % MONTH;int day = month_remainder / DAY;if (year == 0) {if (month == 0) {return day + "天";} else {return month + "月" + day + "天";}} else {return year + "年" + month + "月" + day + "天";}}
}

转载于:https://my.oschina.net/huiger/blog/161740

Java时间操作工具类相关推荐

  1. java/javascript 时间操作工具类

    一.java 时间操作工具类 import org.springframework.util.StringUtils;import java.text.ParseException; import j ...

  2. JAVA时间存储类Period和Duration

    JAVA时间存储类Period和Duration 前言 在JDK1.8中区分了时间和日期的概念,所以有了两个对应的类,LocalDate和LocalTime,区别如下 LocalDate表示日期,不会 ...

  3. Java时间工具类(把日期时间转换成xx秒前、xx分钟前、xx小时前...)

    Java时间工具类(把日期时间转换成xx秒前.xx分钟前.xx小时前...) package com.liuzy.javaopen.entity; import java.text.ParseExce ...

  4. 超详细的Java常用时间操作工具类

    import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java ...

  5. JAVA——文件操作工具类封装的简单实现

    问题描述 关于文件操作的简单工具类,包括文件夹创建,文件夹删除,文件创建,文件重命名,文件复制,文件删除.如果需要文件夹复制,其实就是创建文件夹和复制文件的操作. 解决方案 上下文 package c ...

  6. java 日期操作工具类_java8操作日期的工具类

    java8操作日期的工具类 一.方法概览 该包的API提供了大量相关的方法,这些方法一般有一致的方法前缀: of:静态工厂方法. parse:静态工厂方法,关注于解析. get:获取某些东西的值. i ...

  7. Java时间工具类(获取上个月、获取月份1月1号时间戳、获取月份最后一天时间戳...)

    在开发中我们经常还会用到日期时间,以下是一个日期时间工具类,包含: 获取每月月初时间戳 获取每月15号时间戳 获取每月月末时间戳 获取当前被格式化后的日期 从这些方法中你可以改写出你需要的方法 PS: ...

  8. Java时间工具类,获取日、周、旬、月、季度、半年、年等时间周期

    时间周期工具类,记录在这里方便以后使用,有需要的可以看看. 工具类如下: import java.text.ParseException; import java.text.SimpleDateFor ...

  9. Java 时间, 日历类详解

    1. Java时间戳 在最早出现的 UNIX 操作系统考虑到计算机产生的年代和应用的时限,把1970年1月1日0点定义为时间纪元,这种定义时间的方式在计算机语言中广泛存在,Java就是其中之一.之所以 ...

最新文章

  1. 能源局再出新招 拟推光伏电站竞价上网
  2. python如何绘制折线图-python如何画折线图
  3. vim-go开发环境Tagbar插件和NERTree插件安装
  4. Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”
  5. Oracle virtual box 安装系统黑屏问题
  6. ZipArchive是一个开源的zip开发包工具。
  7. java 中文车牌识别_EasyPR-Java开源中文车牌识别系统工程部署
  8. SM2246EN+闪迪15131
  9. c#/.net操作word插入表格实例
  10. 【历史上的今天】11 月 11 日:腾讯成立;信息论先驱出生;阿德曼提出 DNA 计算
  11. 多校区网络直播系统解决方案
  12. 百度地图marker标注上如何加上数字
  13. 跑步机健身器材标准ENISO20957检测范围有哪些
  14. 80端口web服务攻击痕迹
  15. MySQL的缓存机制
  16. android学习:模拟微博看看界面
  17. 梦幻西游 python.dll_GitHub - 10508zhl/mhxy: tensorflow实践:梦幻西游人物弹窗识别
  18. 天融信防火墙保存配置_天融信防火墙 通用配置
  19. 【javaEE】网络初识
  20. web程序设计(3)——使用CSS设计新闻网页

热门文章

  1. 【jdk源码分析】ArrayList的size()==0和isEmpty()
  2. 对话框处理与登录测试
  3. java/android 做题中整理的碎片小贴士(5)
  4. Linux 下各个目录的作用及内容
  5. 关于struts2的开始学习
  6. 每日记载内容总结44
  7. 用Access的iif代替SQL中的IsNull()
  8. c#_Math.Sign()
  9. c#_按值传递与按引用传递的区别
  10. dubbo被阿里放弃原因_中间件小姐姐直播“带货”——阿里程序员必知的插件