日期的一些常见用法

import  java.text.ParsePosition;
import  java.text.SimpleDateFormat;
import  java.util.Calendar;
import  java.util.Date;
import  java.util.GregorianCalendar;
import  java.util.regex.Pattern;
  
import  org.apache.commons.logging.Log;
import  org.apache.commons.logging.LogFactory;
  
  
public  class  DateUtil {
     protected  static  Log logger = LogFactory.getLog(DateUtil. class );
  
     // 格式:年-月-日 小时:分钟:秒
     public  static  final  String FORMAT_ONE =  "yyyy-MM-dd HH:mm:ss" ;
  
     // 格式:年-月-日 小时:分钟
     public  static  final  String FORMAT_TWO =  "yyyy-MM-dd HH:mm" ;
  
     // 格式:年月日 小时分钟秒
     public  static  final  String FORMAT_THREE =  "yyyyMMdd-HHmmss" ;
  
     // 格式:年-月-日
     public  static  final  String LONG_DATE_FORMAT =  "yyyy-MM-dd" ;
  
     // 格式:月-日
     public  static  final  String SHORT_DATE_FORMAT =  "MM-dd" ;
  
     // 格式:小时:分钟:秒
     public  static  final  String LONG_TIME_FORMAT =  "HH:mm:ss" ;
  
     //格式:年-月
     public  static  final  String MONTG_DATE_FORMAT =  "yyyy-MM" ;
  
     // 年的加减
     public  static  final  int  SUB_YEAR = Calendar.YEAR;
  
     // 月加减
     public  static  final  int  SUB_MONTH = Calendar.MONTH;
  
     // 天的加减
     public  static  final  int  SUB_DAY = Calendar.DATE;
  
     // 小时的加减
     public  static  final  int  SUB_HOUR = Calendar.HOUR;
  
     // 分钟的加减
     public  static  final  int  SUB_MINUTE = Calendar.MINUTE;
  
     // 秒的加减
     public  static  final  int  SUB_SECOND = Calendar.SECOND;
  
     static  final  String dayNames[] = {  "星期日" "星期一" "星期二" "星期三" "星期四" ,
             "星期五" "星期六"  };
  
     @SuppressWarnings ( "unused" )
     private  static  final  SimpleDateFormat timeFormat =  new  SimpleDateFormat(
             "yyyy-MM-dd HH:mm:ss" );
  
     public  DateUtil() {
     }
  
     /**
      * 把符合日期格式的字符串转换为日期类型
      */
     public  static  java.util.Date stringtoDate(String dateStr, String format) {
         Date d =  null ;
         SimpleDateFormat formater =  new  SimpleDateFormat(format);
         try  {
             formater.setLenient( false );
             d = formater.parse(dateStr);
         catch  (Exception e) {
             // log.error(e);
             d =  null ;
         }
         return  d;
     }
  
     /**
      * 把符合日期格式的字符串转换为日期类型
      */
     public  static  java.util.Date stringtoDate(String dateStr, String format,
             ParsePosition pos) {
         Date d =  null ;
         SimpleDateFormat formater =  new  SimpleDateFormat(format);
         try  {
             formater.setLenient( false );
             d = formater.parse(dateStr, pos);
         catch  (Exception e) {
             d =  null ;
         }
         return  d;
     }
  
     /**
      * 把日期转换为字符串
      */
     public  static  String dateToString(java.util.Date date, String format) {
         String result =  "" ;
         SimpleDateFormat formater =  new  SimpleDateFormat(format);
         try  {
             result = formater.format(date);
         catch  (Exception e) {
             // log.error(e);
         }
         return  result;
     }
  
     /**
      * 获取当前时间的指定格式
      */
     public  static  String getCurrDate(String format) {
         return  dateToString( new  Date(), format);
     }
  
     public  static  String dateSub( int  dateKind, String dateStr,  int  amount) {
         Date date = stringtoDate(dateStr, FORMAT_ONE);
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         calendar.add(dateKind, amount);
         return  dateToString(calendar.getTime(), FORMAT_ONE);
     }
  
     /**
      * 两个日期相减
      * @return 相减得到的秒数
      */
     public  static  long  timeSub(String firstTime, String secTime) {
         long  first = stringtoDate(firstTime, FORMAT_ONE).getTime();
         long  second = stringtoDate(secTime, FORMAT_ONE).getTime();
         return  (second - first) /  1000 ;
     }
  
     /**
      * 获得某月的天数
      */
     public  static  int  getDaysOfMonth(String year, String month) {
         int  days =  0 ;
         if  (month.equals( "1" ) || month.equals( "3" ) || month.equals( "5" )
                 || month.equals( "7" ) || month.equals( "8" ) || month.equals( "10" )
                 || month.equals( "12" )) {
             days =  31 ;
         else  if  (month.equals( "4" ) || month.equals( "6" ) || month.equals( "9" )
                 || month.equals( "11" )) {
             days =  30 ;
         else  {
             if  ((Integer.parseInt(year) %  4  ==  0  && Integer.parseInt(year) %  100  !=  0 )
                     || Integer.parseInt(year) %  400  ==  0 ) {
                 days =  29 ;
             else  {
                 days =  28 ;
             }
         }
  
         return  days;
     }
  
     /**
      * 获取某年某月的天数
      */
     public  static  int  getDaysOfMonth( int  year,  int  month) {
         Calendar calendar = Calendar.getInstance();
         calendar.set(year, month -  1 1 );
         return  calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
     }
  
     /**
      * 获得当前日期
      */
     public  static  int  getToday() {
         Calendar calendar = Calendar.getInstance();
         return  calendar.get(Calendar.DATE);
     }
  
     /**
      * 获得当前月份
      */
     public  static  int  getToMonth() {
         Calendar calendar = Calendar.getInstance();
         return  calendar.get(Calendar.MONTH) +  1 ;
     }
  
     /**
      * 获得当前年份
      */
     public  static  int  getToYear() {
         Calendar calendar = Calendar.getInstance();
         return  calendar.get(Calendar.YEAR);
     }
  
     /**
      * 返回日期的天
      */
     public  static  int  getDay(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         return  calendar.get(Calendar.DATE);
     }
  
     /**
      * 返回日期的年
      */
     public  static  int  getYear(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         return  calendar.get(Calendar.YEAR);
     }
  
     /**
      * 返回日期的月份,1-12
      */
     public  static  int  getMonth(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         return  calendar.get(Calendar.MONTH) +  1 ;
     }
  
     /**
      * 计算两个日期相差的天数,如果date2 > date1 返回正数,否则返回负数
      */
     public  static  long  dayDiff(Date date1, Date date2) {
         return  (date2.getTime() - date1.getTime()) /  86400000 ;
     }
  
     /**
      * 比较两个日期的年差
      */
     public  static  int  yearDiff(String before, String after) {
         Date beforeDay = stringtoDate(before, LONG_DATE_FORMAT);
         Date afterDay = stringtoDate(after, LONG_DATE_FORMAT);
         return  getYear(afterDay) - getYear(beforeDay);
     }
  
     /**
      * 比较指定日期与当前日期的差
      */
     public  static  int  yearDiffCurr(String after) {
         Date beforeDay =  new  Date();
         Date afterDay = stringtoDate(after, LONG_DATE_FORMAT);
         return  getYear(beforeDay) - getYear(afterDay);
     }
      
     /**
      * 比较指定日期与当前日期的差
      */
     public  static  long  dayDiffCurr(String before) {
         Date currDate = DateUtil.stringtoDate(currDay(), LONG_DATE_FORMAT);
         Date beforeDate = stringtoDate(before, LONG_DATE_FORMAT);
         return  (currDate.getTime() - beforeDate.getTime()) /  86400000 ;
  
     }
  
     /**
      * 获取每月的第一周
      */
     public  static  int  getFirstWeekdayOfMonth( int  year,  int  month) {
         Calendar c = Calendar.getInstance();
         c.setFirstDayOfWeek(Calendar.SATURDAY);  // 星期天为第一天
         c.set(year, month -  1 1 );
         return  c.get(Calendar.DAY_OF_WEEK);
     }
     /**
      * 获取每月的最后一周
      */
     public  static  int  getLastWeekdayOfMonth( int  year,  int  month) {
         Calendar c = Calendar.getInstance();
         c.setFirstDayOfWeek(Calendar.SATURDAY);  // 星期天为第一天
         c.set(year, month -  1 , getDaysOfMonth(year, month));
         return  c.get(Calendar.DAY_OF_WEEK);
     }
  
     /**
      * 获得当前日期字符串,格式"yyyy_MM_dd_HH_mm_ss"
     
      * @return
      */
     public  static  String getCurrent() {
         Calendar cal = Calendar.getInstance();
         cal.setTime( new  Date());
         int  year = cal.get(Calendar.YEAR);
         int  month = cal.get(Calendar.MONTH) +  1 ;
         int  day = cal.get(Calendar.DAY_OF_MONTH);
         int  hour = cal.get(Calendar.HOUR_OF_DAY);
         int  minute = cal.get(Calendar.MINUTE);
         int  second = cal.get(Calendar.SECOND);
         StringBuffer sb =  new  StringBuffer();
         sb.append(year).append( "_" ).append(StringUtil.addzero(month,  2 ))
                 .append( "_" ).append(StringUtil.addzero(day,  2 )).append( "_" )
                 .append(StringUtil.addzero(hour,  2 )).append( "_" ).append(
                         StringUtil.addzero(minute,  2 )).append( "_" ).append(
                         StringUtil.addzero(second,  2 ));
         return  sb.toString();
     }
  
     /**
      * 获得当前日期字符串,格式"yyyy-MM-dd HH:mm:ss"
     
      * @return
      */
     public  static  String getNow() {
         Calendar today = Calendar.getInstance();
         return  dateToString(today.getTime(), FORMAT_ONE);
     }
  
     
  
     /**
      * 判断日期是否有效,包括闰年的情况
     
      * @param date
      *          YYYY-mm-dd
      * @return
      */
     public  static  boolean  isDate(String date) {
         StringBuffer reg =  new  StringBuffer(
                 "^((\\d{2}(([02468][048])|([13579][26]))-?((((0?" );
         reg.append( "[13578])|(1[02]))-?((0?[1-9])|([1-2][0-9])|(3[01])))" );
         reg.append( "|(((0?[469])|(11))-?((0?[1-9])|([1-2][0-9])|(30)))|" );
         reg.append( "(0?2-?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][12" );
         reg.append( "35679])|([13579][01345789]))-?((((0?[13578])|(1[02]))" );
         reg.append( "-?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))" );
         reg.append( "-?((0?[1-9])|([1-2][0-9])|(30)))|(0?2-?((0?[" );
         reg.append( "1-9])|(1[0-9])|(2[0-8]))))))" );
         Pattern p = Pattern.compile(reg.toString());
         return  p.matcher(date).matches();
     }
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值