`

J2EE工具类:DateUtil .java

阅读更多
package com.worthtech.app.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateUtil {

	/**
	 * 获得当前时间,格式yyyy-MM-dd hh:mm:ss
	 * @param format
	 * @return
	 */
	public static String getCurrentDate(){
		return getCurrentDate("yyyy-MM-dd hh:mm:ss");
	}
	/**
	 * 获得当前时间,格式自定义
	 * @param format
	 * @return
	 */
	public static String getCurrentDate(String format){
		Calendar day=Calendar.getInstance(); 
		day.add(Calendar.DATE,0); 
		SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
		String date = sdf.format(day.getTime());
		return date;
	}
	/**
	 * 获得昨天时间,格式自定义
	 * @param format
	 * @return
	 */
	public static String getYesterdayDate(String format){
		Calendar day=Calendar.getInstance(); 
		day.add(Calendar.DATE,-1); 
		SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
		String date = sdf.format(day.getTime());
		return date;
	}
	 /**  
      * @param date1 需要比较的时间 不能为空(null),需要正确的日期格式 ,如:2009-09-12 
      * @param date2 被比较的时间  为空(null)则为当前时间  
      * @param stype 返回值类型   0为多少天,1为多少个月,2为多少年  
      * @return  
      * 举例:
      * compareDate("2009-09-12", null, 0);//比较天
      * compareDate("2009-09-12", null, 1);//比较月
      * compareDate("2009-09-12", null, 2);//比较年
      */ 
     public static int compareDate(String startDay,String endDay,int stype){  
         int n = 0;  
         String[] u = {"天","月","年"};  
         String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";  
           
         endDay = endDay==null?getCurrentDate("yyyy-MM-dd"):endDay;  
           
         DateFormat df = new SimpleDateFormat(formatStyle);  
         Calendar c1 = Calendar.getInstance();  
         Calendar c2 = Calendar.getInstance();  
         try {  
             c1.setTime(df.parse(startDay));  
             c2.setTime(df.parse(endDay));
         } catch (Exception e3) {  
             System.out.println("wrong occured");  
         }  
         //List list = new ArrayList();  
         while (!c1.after(c2)) {                   // 循环对比,直到相等,n 就是所要的结果  
             //list.add(df.format(c1.getTime()));    // 这里可以把间隔的日期存到数组中 打印出来  
             n++;  
             if(stype==1){  
                 c1.add(Calendar.MONTH, 1);          // 比较月份,月份+1  
             }  
             else{  
                 c1.add(Calendar.DATE, 1);           // 比较天数,日期+1  
             }  
         }  
         n = n-1;  
         if(stype==2){  
             n = (int)n/365;  
         }     
//         System.out.println(startDay+" -- "+endDay+" 相差多少"+u[stype]+":"+n);        
         return n;  
     }
     /**
      * 判断时间是否符合时间格式
      */
	public static boolean isDate(String date, String dateFormat) {
		if (date != null) {
			java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(dateFormat);
			format.setLenient(false);
			try {
				format.format(format.parse(date));
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				return false;
			}
			return true;
		}
		return false;
	}
	 /**
	  * 实现给定某日期,判断是星期几
	  * date:必须yyyy-MM-dd格式
	  */
	 public static String getWeekday(String date){
		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");  
     SimpleDateFormat sdw = new SimpleDateFormat("E");  
     Date d = null;  
     try {  
         d = sd.parse(date);  
     } catch (ParseException e) {  
         e.printStackTrace();  
     }
     return sdw.format(d);
	 }
	 /**
	  * 用来全局控制 上一周,本周,下一周的周数变化
	  */
	private static int weeks = 0;
	/**
	 * 获得当前日期与本周一相差的天数
	 */
	 private static int getMondayPlus() {
	     Calendar cd = Calendar.getInstance();
	     // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
	     int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
	     if (dayOfWeek == 1) {
	         return -6;
	     } else {
	         return 2 - dayOfWeek;
	     }
	 }
	 /**
	  * 获得本周星期一的日期
	  */
	 public static String getCurrentMonday(String format) {
	     weeks = 0;
	     int mondayPlus = getMondayPlus();
	     Calendar currentDate=Calendar.getInstance();
	     currentDate.add(Calendar.DATE, mondayPlus);
	     SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
	     String date = sdf.format(currentDate.getTime());
	     return date;
	 }
	 /**
	  * 获得上周星期一的日期
	  */
	 public static String getPreviousMonday(String format) {
	     weeks--;
	     int mondayPlus = getMondayPlus();
	     Calendar currentDate=Calendar.getInstance();
	     currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
	     SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
	     String date = sdf.format(currentDate.getTime());
	     return date;
	 }
	 /**
	  * 获得下周星期一的日期
	  */
	 public static String getNextMonday(String format) {
	     weeks++;
	     int mondayPlus = getMondayPlus();
	//     GregorianCalendar currentDate = new GregorianCalendar();
	     Calendar currentDate=Calendar.getInstance();
	     currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
	     SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
	     String date = sdf.format(currentDate.getTime());
	     return date;
	 }
	 /**
	  * 获得相应周的周日的日期
	  * 此方法必须写在getCurrentMonday,getPreviousMonday或getNextMonday方法之后
	  */
	 public static String getSunday(String format) {
	     int mondayPlus = getMondayPlus();
	     Calendar currentDate=Calendar.getInstance();
	     currentDate.add(Calendar.DATE, mondayPlus + 7 * weeks + 6);
	     SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
	     String date = sdf.format(currentDate.getTime());
	     return date;
	 }


/**
	  *method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
	  *@param dateString 需要转换为timestamp的字符串
	  *@return dataTime timestamp
	  */
	public final static java.sql.Timestamp string2Time(String dateString) {
		DateFormat dateFormat;
		dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);// 设定格式
		dateFormat.setLenient(false);
		java.util.Date date = null;
		try {
			date = dateFormat.parse(dateString);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
//		java.sql.Timestamp dateTime = new java.sql.Timestamp(date.getTime());
		return new java.sql.Timestamp(date.getTime());// Timestamp类型,timeDate.getTime()返回一个long型
	}

	/**
	 *method 将字符串类型的日期转换为一个Date(java.sql.Date)
	 * 
	 * @param dateString
	 *            需要转换为Date的字符串
	 *@return dataTime Date
	 */
	public final static java.sql.Date string2Date(String dateString) {
		DateFormat dateFormat;
		dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
		dateFormat.setLenient(false);
		java.util.Date date = null;
		try {
			date = dateFormat.parse(dateString);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
//		java.sql.Date dateTime = new java.sql.Date(date.getTime());// sql类型
		return new java.sql.Date(date.getTime());
	}

//记录考勤, 记录迟到、早退时间
public static String getState() {   
        String state = "正常";   
        DateFormat df = new SimpleDateFormat("HH:mm:ss");   
        Date d = new Date();   
        try {   
            Date d1 = df.parse("08:00:00");   
            Date d2 = df.parse(df.format(d));   
            Date d3 = df.parse("18:00:00");   
  
            int t1 = (int) d1.getTime();   
            int t2 = (int) d2.getTime();   
            int t3 = (int) d3.getTime();   
            if (t2 < t1) {   
  
                long between = (t1 - t2) / 1000;// 除以1000是为了转换成秒   
                long hour1 = between % (24 * 3600) / 3600;   
                long minute1 = between % 3600 / 60;   
  
                state = "迟到 :" + hour1 + "时" + minute1 + "分";   
  
            } else if (t2 < t3) {   
                long between = (t3 - t2) / 1000;// 除以1000是为了转换成秒   
                long hour1 = between % (24 * 3600) / 3600;   
                long minute1 = between % 3600 / 60;   
                state = "早退 :" + hour1 + "时" + minute1 + "分";   
            }   
            return state;   
        } catch (Exception e) {   
            return state;   
        }   
  
    }   
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

        String s = getState();   
        System.out.println(s);
	}

}

分享到:
评论

相关推荐

    j2ee.jar架包

    j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...

    j2ee 1.4所有jar包

    activation.jar javax.servlet.jar javax.servlet.jsp.jar jboss-j2ee.jar jboss-jaxrpc.jar jboss-jsr77.jar jboss-saaj.jar mail.jar namespace.jar xml-apis.jar

    J2EE JAR包(J2EE1.3 J2EE1.4 J2EE5.0 )

    Java 企业版(Java 2 Platform, Enterprise Edition,简称 J2EE)是 Sun Microsystems 推出的用于构建分布式、多层企业级应用的框架。它为开发者提供了多种服务和组件模型,包括Java Servlets、JavaServer Pages ...

    21天学通J2EE和一些J2EE书及代码].java.-.Teach.Yourself.J2EE.in.21.Days.-.Sams.(eBook-pdf)

    《21天学通J2EE》一书旨在为读者提供一个系统且高效的学习路径,以掌握Java 2 Enterprise Edition(J2EE)的核心概念和技术。J2EE是Sun Microsystems在2000年推出的一套企业级Java平台标准,它提供了一组组件和服务...

    java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.

    java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.

    HTML笔记. J2EE笔记. Javascript笔记. JAVA笔记.oracle 笔记.Linux笔记.tomcat笔记.面试问题.数据结构.听韩顺平的笔记.正则表达式.

    HTML笔记. J2EE笔记. Javascript笔记. JAVA笔记.oracle 笔记.Linux笔记.tomcat笔记.面试问题.数据结构.听韩顺平的笔记.正则表达式.等,我是我在上大学时学习做的笔记,拿出来和大家共享。。

    Turbo ePrinting(J2EE版)开发指南.rar

    《Turbo ePrinting(J2EE版)开发指南》是一份专为Java企业级开发者准备的详细教程,旨在帮助他们理解和掌握如何在J2EE平台上开发和实现Turbo ePrinting系统。该指南涵盖了从基础概念到高级实践的全方位内容,旨在提升...

    J2EE考试题目及答案.pdf

    J2EE 是 Java 企业版平台的缩写,指的是 Java 语言中用于开发企业级应用程序的技术平台。J2EE 平台主要包括四层模型:客户端层、Web 层、业务逻辑层和企业信息系统层。 J2EE 平台的四层模型: * 客户端层:运行在...

    第一章 J2EE概述.ppt

    J2EE(Java Enterprise Edition),是Java EE编程技术课程的一部分,为企业级应用程序提供了一种标准化的开发框架。J2EE的出现是为了解决传统应用程序模型的种种缺陷,提供了一种可扩展、可维护、可伸缩的开发架构。...

    Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007

    《Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007》这本书是针对Java和J2EE开发者求职面试的一本指南,它提供了丰富的面试问题和解答,帮助求职者准备J2EE相关的职位面试。这本书的第二版在2007年4月发布...

    Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007.pdf

    ### Java/J2EE Job Interview Companion知识点总结 #### 一、书籍基本信息 - **书名**:《Java/J2EE Job Interview Companion》第二版 - **出版时间**:2007年4月 - **作者**:K. Arulkumaran 和 A. Sivayini - **...

    j2ee源码 Commonjava.java

    j2ee源码j2ee源码j2ee源码j2ee源码j2ee源码j2ee源码j2ee源Commonjava.javaCommonjava.javaCommonjava.javaCommonjava.javaCommonjava.java

    J2EE_architecture.rar_site:www.pudn.com_架构师

    J2EE提供JTA(Java Transaction API)来处理事务,JMS(Java Message Service)用于异步通信,JNDI(Java Naming and Directory Interface)提供命名和目录服务。 5. **中间件(Middleware)**:J2EE应用服务器(如...

    java-一个j2ee的开发案例程序.zip.zip

    你可以从中学习到如何将Java类、接口和框架整合起来实现一个完整的J2EE应用。 其次,"一个j2ee的开发案例程序.zip"是案例程序的源代码或二进制文件。这个压缩文件可能包含以下几个部分: 1. **源代码**:可能包括...

    J2EE系列讲座之Hibernate.lesson1.rar

    5. **实体类和映射文件**:讲解如何创建Java实体类,以及对应的.hbm.xml映射文件,理解属性与数据库字段的对应。 6. **CRUD操作**:展示如何使用Hibernate进行创建(Create)、读取(Read)、更新(Update)和删除...

    archive_一个j2ee的开发案例程序.zip.zip

    标题中的"archive_一个j2EE的开发案例程序.zip.zip"表明这是一个压缩文件,其中包含了一个J2EE(Java 2 Platform, Enterprise Edition)的开发案例。J2EE是Java平台的一个版本,专为构建企业级分布式应用系统设计。...

    Java开发语言的开发平台与J2EE编程技术问题研究.pdf

    J2EE(Java 2 Platform, Enterprise Edition)是基于Java语言的一种企业级应用开发平台,它侧重于企业级应用的开发。J2EE技术的出现,弥补了Java在企业级应用中的不足,其核心是Enterprise JavaBeans(EJB),提供了...

    javax.management.j2ee:javax.management.j2ee api的存储库

    :warning: 该项目现在是EE4J计划的一部分。 该仓库已被归档,因为所有活动现在都在。 有关整体EE4J过渡状态,请参见。 javax.management.j2ee javax.management.j2ee api的存储库

    j2ee.chm.zip_chm help id java_j2ee chm_j2ee help c++_j2ee.c_zip

    《J2EE技术详解——基于j2ee.chm.zip_chm help id java_j2ee chm_j2ee help c++_j2ee.c_zip的综合指南》 在信息技术领域,Java 2 Platform, Enterprise Edition(J2EE)是用于构建企业级应用的重要平台。它提供了...

    Java.J2EE.EJB-Enterprise.JavaBeans, 3rd Edition-Titan.Books

    《Java.J2EE.EJB-Enterprise.JavaBeans, 3rd Edition-Titan.Books》是一部针对企业级Java开发的重要参考资料,特别关注Java Enterprise Edition (J2EE) 中的Enterprise JavaBeans (EJB) 技术。这本书的第三版,由...

Global site tag (gtag.js) - Google Analytics