• 日期类的一些常用方法


      1 package com.liveyc.common.utils;
      2 
      3 import java.text.ParseException;
      4 import java.text.SimpleDateFormat;
      5 import java.util.ArrayList;
      6 import java.util.Calendar;
      7 import java.util.Date;
      8 import java.util.HashMap;
      9 import java.util.List;
     10 import java.util.Map;
     11 
     12 /**
     13  * @module 系统模块
     14  * @func 日期处理类
     15  * @author chenjian
     16  */
     17 public class DateUtils {
     18     private static String ymdhms = "yyyy-MM-dd HH:mm:ss";
     19     private static String ymd = "yyyy-MM-dd";
     20     public static SimpleDateFormat ymdSDF = new SimpleDateFormat(ymd);
     21     private static String year = "yyyy";
     22     private static String month = "MM";
     23     private static String day = "dd";
     24     public static SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat(ymdhms);
     25     public static SimpleDateFormat yearSDF = new SimpleDateFormat(year);
     26     public static SimpleDateFormat monthSDF = new SimpleDateFormat(month);
     27     public static SimpleDateFormat daySDF = new SimpleDateFormat(day);
     28 
     29     public static SimpleDateFormat yyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-dd HH:mm");
     30 
     31     public static SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");
     32 
     33     public static SimpleDateFormat yyyyMMddHH_NOT_ = new SimpleDateFormat("yyyyMMdd");
     34 
     35     public static long DATEMM = 86400L;
     36 
     37     
     38     
     39     /**
     40      * 获得当前时间 格式:2014-12-02 10:38:53
     41      * 
     42      * @return String
     43      */
     44     public static String getCurrentTime() {
     45         return yyyyMMddHHmmss.format(new Date());
     46     }
     47 
     48     /**
     49      * 可以获取昨天的日期 格式:2014-12-01
     50      * 
     51      * @return String
     52      */
     53     public static String getYesterdayYYYYMMDD() {
     54         Date date = new Date(System.currentTimeMillis() - DATEMM * 1000L);
     55         String str = yyyyMMdd.format(date);
     56         try {
     57             date = yyyyMMddHHmmss.parse(str + " 00:00:00");
     58             return yyyyMMdd.format(date);
     59         } catch (ParseException e) {
     60             e.printStackTrace();
     61         }
     62         return "";
     63     }
     64 
     65     /**
     66      * 可以获取后退N天的日期 格式:传入2 得到2014-11-30
     67      * 
     68      * @param backDay
     69      * @return String
     70      */
     71     public String getStrDate(String backDay) {
     72         Calendar calendar = Calendar.getInstance();
     73         calendar.add(Calendar.DATE, Integer.parseInt("-" + backDay));
     74         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     75         String back = sdf.format(calendar.getTime());
     76         return back;
     77     }
     78 
     79     /**
     80      * 获取当前的年、月、日
     81      * 
     82      * @return String
     83      */
     84     public static String getCurrentYear() {
     85         return yearSDF.format(new Date());
     86     }
     87 
     88     public static String getCurrentMonth() {
     89         return monthSDF.format(new Date());
     90     }
     91 
     92     public static String getCurrentDay() {
     93         return daySDF.format(new Date());
     94     }
     95 
     96     /**
     97      * 字符转日期
     98      * @param str
     99      * @return
    100      */
    101     public static Date StrToDate(String str) {
    102         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    103         Date date = null;
    104         try {
    105             date = format.parse(str);
    106         } catch (ParseException e) {
    107             e.printStackTrace();
    108         }
    109         return date;
    110     }
    111 
    112     /**
    113      * 得到月份的最大天数
    114      * 
    115      * @param date
    116      * @return
    117      */
    118     public static int getDaysOfMonth(Date date) {
    119         Calendar calendar = Calendar.getInstance();
    120         calendar.setTime(date);
    121         return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    122     }
    123 
    124     /**
    125      * 获取年月日 也就是当前时间 格式:2014-12-02
    126      * 
    127      * @return String
    128      */
    129     public static String getCurrentymd() {
    130         return ymdSDF.format(new Date());
    131     }
    132 
    133     /**
    134      * 获取今天0点开始的秒数
    135      * 
    136      * @return long
    137      */
    138     public static long getTimeNumberToday() {
    139         Date date = new Date();
    140         String str = yyyyMMdd.format(date);
    141         try {
    142             date = yyyyMMdd.parse(str);
    143             return date.getTime() / 1000L;
    144         } catch (ParseException e) {
    145             e.printStackTrace();
    146         }
    147         return 0L;
    148     }
    149 
    150     /**
    151      * 获取今天的日期 格式:20141202
    152      * 
    153      * @return String
    154      */
    155     public static String getTodateString() {
    156         String str = yyyyMMddHH_NOT_.format(new Date());
    157         return str;
    158     }
    159 
    160     /**
    161      * 获取昨天的日期 格式:20141201
    162      * 
    163      * @return String
    164      */
    165     public static String getYesterdayString() {
    166         Date date = new Date(System.currentTimeMillis() - DATEMM * 1000L);
    167         String str = yyyyMMddHH_NOT_.format(date);
    168         return str;
    169     }
    170 
    171     /**
    172      * 获得昨天零点
    173      * 
    174      * @return Date
    175      */
    176     public static Date getYesterDayZeroHour() {
    177         Calendar cal = Calendar.getInstance();
    178         cal.add(Calendar.DATE, -1);
    179         cal.set(Calendar.SECOND, 0);
    180         cal.set(Calendar.MINUTE, 0);
    181         cal.set(Calendar.HOUR, 0);
    182         return cal.getTime();
    183     }
    184 
    185     /**
    186      * 把long型日期转String ;---OK
    187      * 
    188      * @param date
    189      *            long型日期;
    190      * @param format
    191      *            日期格式;
    192      * @return
    193      */
    194     public static String longToString(long date, String format) {
    195         SimpleDateFormat sdf = new SimpleDateFormat(format);
    196         // 前面的lSysTime是秒数,先乘1000得到毫秒数,再转为java.util.Date类型
    197         java.util.Date dt2 = new Date(date * 1000L);
    198         String sDateTime = sdf.format(dt2); // 得到精确到秒的表示:08/31/2006 21:08:00
    199         return sDateTime;
    200     }
    201 
    202     /**
    203      * 获得今天零点
    204      * 
    205      * @return Date
    206      */
    207     public static Date getTodayZeroHour() {
    208         Calendar cal = Calendar.getInstance();
    209         cal.set(Calendar.SECOND, 0);
    210         cal.set(Calendar.MINUTE, 0);
    211         cal.set(Calendar.HOUR, 0);
    212         return cal.getTime();
    213     }
    214 
    215     /**
    216      * 获得昨天23时59分59秒
    217      * 
    218      * @return
    219      */
    220     public static Date getYesterDay24Hour() {
    221         Calendar cal = Calendar.getInstance();
    222         cal.add(Calendar.DATE, -1);
    223         cal.set(Calendar.SECOND, 59);
    224         cal.set(Calendar.MINUTE, 59);
    225         cal.set(Calendar.HOUR, 23);
    226         return cal.getTime();
    227     }
    228 
    229     /**
    230      * String To Date ---OK
    231      * 
    232      * @param date
    233      *            待转换的字符串型日期;
    234      * @param format
    235      *            转化的日期格式
    236      * @return 返回该字符串的日期型数据;
    237      */
    238     public static Date stringToDate(String date, String format) {
    239         SimpleDateFormat sdf = new SimpleDateFormat(format);
    240         try {
    241             return sdf.parse(date);
    242         } catch (ParseException e) {
    243             return null;
    244         }
    245     }
    246 
    247     /**
    248      * 获得指定日期所在的自然周的第一天,即周日
    249      * 
    250      * @param date
    251      *            日期
    252      * @return 自然周的第一天
    253      */
    254     public static Date getStartDayOfWeek(Date date) {
    255         Calendar c = Calendar.getInstance();
    256         c.setTime(date);
    257         c.set(Calendar.DAY_OF_WEEK, 1);
    258         date = c.getTime();
    259         return date;
    260     }
    261 
    262     /**
    263      * 获得指定日期所在的自然周的最后一天,即周六
    264      * 
    265      * @param date
    266      * @return
    267      */
    268     public static Date getLastDayOfWeek(Date date) {
    269         Calendar c = Calendar.getInstance();
    270         c.setTime(date);
    271         c.set(Calendar.DAY_OF_WEEK, 7);
    272         date = c.getTime();
    273         return date;
    274     }
    275 
    276     /**
    277      * 获得指定日期所在当月第一天
    278      * 
    279      * @param date
    280      * @return
    281      */
    282     public static Date getStartDayOfMonth(Date date) {
    283         Calendar c = Calendar.getInstance();
    284         c.setTime(date);
    285         c.set(Calendar.DAY_OF_MONTH, 1);
    286         date = c.getTime();
    287         return date;
    288     }
    289 
    290     /**
    291      * 获得指定日期所在当月最后一天
    292      * 
    293      * @param date
    294      * @return
    295      */
    296     public static Date getLastDayOfMonth(Date date) {
    297         Calendar c = Calendar.getInstance();
    298         c.setTime(date);
    299         c.set(Calendar.DATE, 1);
    300         c.add(Calendar.MONTH, 1);
    301         c.add(Calendar.DATE, -1);
    302         date = c.getTime();
    303         return date;
    304     }
    305 
    306     /**
    307      * 获得指定日期的下一个月的第一天
    308      * 
    309      * @param date
    310      * @return
    311      */
    312     public static Date getStartDayOfNextMonth(Date date) {
    313         Calendar c = Calendar.getInstance();
    314         c.setTime(date);
    315         c.add(Calendar.MONTH, 1);
    316         c.set(Calendar.DAY_OF_MONTH, 1);
    317         date = c.getTime();
    318         return date;
    319     }
    320 
    321     /**
    322      * 获得指定日期的下一个月的最后一天
    323      * 
    324      * @param date
    325      * @return
    326      */
    327     public static Date getLastDayOfNextMonth(Date date) {
    328         Calendar c = Calendar.getInstance();
    329         c.setTime(date);
    330         c.set(Calendar.DATE, 1);
    331         c.add(Calendar.MONTH, 2);
    332         c.add(Calendar.DATE, -1);
    333         date = c.getTime();
    334         return date;
    335     }
    336 
    337     /**
    338      * 
    339      * 求某一个时间向前多少秒的时间(currentTimeToBefer)---OK
    340      * 
    341      * @param givedTime
    342      *            给定的时间
    343      * @param interval
    344      *            间隔时间的毫秒数;计算方式 :n(天)*24(小时)*60(分钟)*60(秒)(类型)
    345      * @param format_Date_Sign
    346      *            输出日期的格式;如yyyy-MM-dd、yyyyMMdd等;
    347      */
    348     public static String givedTimeToBefer(String givedTime, long interval, String format_Date_Sign) {
    349         String tomorrow = null;
    350         try {
    351             SimpleDateFormat sdf = new SimpleDateFormat(format_Date_Sign);
    352             Date gDate = sdf.parse(givedTime);
    353             long current = gDate.getTime(); // 将Calendar表示的时间转换成毫秒
    354             long beforeOrAfter = current - interval * 1000L; // 将Calendar表示的时间转换成毫秒
    355             Date date = new Date(beforeOrAfter); // 用timeTwo作参数构造date2
    356             tomorrow = new SimpleDateFormat(format_Date_Sign).format(date);
    357         } catch (ParseException e) {
    358             e.printStackTrace();
    359         }
    360         return tomorrow;
    361     }
    362 
    363     /**
    364      * 把String 日期转换成long型日期;---OK
    365      * 
    366      * @param date
    367      *            String 型日期;
    368      * @param format
    369      *            日期格式;
    370      * @return
    371      */
    372     public static long stringToLong(String date, String format) {
    373         SimpleDateFormat sdf = new SimpleDateFormat(format);
    374         Date dt2 = null;
    375         long lTime = 0;
    376         try {
    377             dt2 = sdf.parse(date);
    378             // 继续转换得到秒数的long型
    379             lTime = dt2.getTime() / 1000;
    380         } catch (ParseException e) {
    381             e.printStackTrace();
    382         }
    383 
    384         return lTime;
    385     }
    386 
    387     /**
    388      * 根据结束时间以及间隔差值,求符合要求的日期集合;
    389      * 
    390      * @param endTime
    391      * @param interval
    392      * @param isEndTime
    393      * @return
    394      */
    395     public static Map<String, String> getDate(String endTime, Integer interval, boolean isEndTime) {
    396         Map<String, String> result = new HashMap<String, String>();
    397         if (interval == 0 || isEndTime) {
    398             if (isEndTime)
    399                 result.put(endTime, endTime);
    400         }
    401         if (interval > 0) {
    402             int begin = 0;
    403             for (int i = begin; i < interval; i++) {
    404                 endTime = givedTimeToBefer(endTime, DATEMM, ymd);
    405                 result.put(endTime, endTime);
    406             }
    407         }
    408         return result;
    409     }
    410     
    411     
    412     /**
    413      * @Description: 输出指定两个日期之间的所有日期
    414      * @Title: process   
    415      * @author:  xuyou   
    416      * @date:   2017年12月12日  
    417      * @param date1 开始时间
    418      * @param date2 结束时间
    419      * @return
    420      * @throws Exception 
    421      */
    422     public static List<String> process(String date1, String date2) throws Exception {
    423         List<String> list = new ArrayList<String>();
    424         //如果两个时间相同
    425         if (date1.equals(date2)) {
    426             list.add(date1);
    427             return list;
    428         }
    429 
    430         String tmp;
    431         if (date1.compareTo(date2) > 0) { // 确保 date1的日期不晚于date2
    432             tmp = date1;
    433             date1 = date2;
    434             date2 = tmp;
    435         }
    436 
    437         tmp = yyyyMMddHH_NOT_.format(str2Date(date1).getTime() + 3600 * 24 * 1000);
    438         list.add(date1);
    439         while (tmp.compareTo(date2) < 0) {
    440             list.add(tmp);
    441             tmp = yyyyMMddHH_NOT_.format(str2Date(tmp).getTime() + 3600 * 24 * 1000);
    442         }
    443         list.add(date2);
    444         return list;
    445     }
    446 
    447     public static Date str2Date(String str) {
    448         if (str == null)
    449             return null;
    450         try {
    451             return yyyyMMddHH_NOT_.parse(str);
    452         } catch (ParseException e) {
    453             e.printStackTrace();
    454         }
    455         return null;
    456     }
    457     
    458 }
  • 相关阅读:
    2012-2013年度大总结
    [每日一题] 11gOCP 1z0-052 :2013-08-31 数据库的存储结构....................................................A8
    Oracle约束操作
    几道字典树题目
    1032
    uva 10718 Bit Mask(贪心)
    找工作笔试面试那些事儿(2)---内存管理那些事
    汉语-词语:结构
    汉语-词语:形式
    汉语-词语:方向
  • 原文地址:https://www.cnblogs.com/xuyou551/p/8028259.html
Copyright © 2020-2023  润新知